之前写了《ADO.NET常用类的使用》,里面就有提及如何调用存储过程,这里先复习一下,
先说明一下这里用的是之前的测试数据库,存储过程是晓村写的 Ins_User
//这里就只贴存储过程说明(还是英文嘀, 我用金山词霸翻译一下)和存储过程的参数
-- =============================================
-- Author: Zplutor
-- Description: Use to insert a new record into User.// 使用插入一个新的记录到用户
-- =============================================
ALTER PROCEDURE [dbo].[Ins_User]
@UserID varchar(20),
@Password varchar(20),
@RealName nvarchar(4) = NULL,
@QQ bigint,
@Email varchar(50),
@Telephone bigint,
@ShortTele int = NULL
//连接字符串
string strCon =
"Data Source=20090503-2108;Initial Catalog=DOF_Work_Site_Test_DataBase;
Integrated Security=True";
SqlConnection con = new SqlConnection(strCon);
SqlCommand com = new SqlCommand("Ins_User", con);
//指明类型是存储过程,如果不指明,则默认是CommandType.Text (SQL查询语句)
com.CommandType = CommandType.StoredProcedure;
接下就麻烦了,要为SqlCommand对象设置参数,要用到SqlParameter类,有7个构造函数,看了头就发麻。
SqlParameter sp = new SqlParameter("@UserID", SqlDbType.NVarChar, 20);// 参数名称、参数的类型、参数的大小
sp.Value = UserID;//赋值
这样只是完成了SqlCommand的声明初始化,接下来还要设置成SqlCommand的参数:
com.Parameters.Add(sp);
如果是多个参数只要重新初始化 SqlParameter sp 对象就行了,切忌不要再声明,不然就浪费内存了。
实际上SqlParameter类有多个构造函数,你可以根据自己的需要设置。
为SqlCommand对象设置参数也有多种方法,SqlCommand类有个Parameters属性(注意单词是复数形式),
com.Parameters.Add("@Password", SqlDbType.NVarChar, 20);
com.Parameters["@Password"].Value = pwd;
以上两种方法都是等价的,看个人习惯吧,我更偏向于第一种,更加简明易懂。
调用存储过程的麻烦还没完,如果调用了一个允许参数为空的存储过程,那就用到方法重载(终于发现重载的实际好处了)。
当然如果表现层,业务逻辑层处理得好的话,也可以不用重载。

浙公网安备 33010602011771号