SqlCommand调用存储过程(return,ouput等)

微软的SqlHelper提供了一系列的方法,很值得学习,目前正在编写一个属于自己的SqlHelper类,不断完善自己的工具类库,这里就SqlCommand对象调用存储过程做一下总结,些许注意事项值得“注意”
代码截图我直接从笔记里面截来的,这上传后的分辨率有点假。。。

SqlParmeter类配置参数:

DbType:获取或设置参数的DbType

Direction:获取或设置一个值

IsNullable:获取或设置一个值

ParameterName:获取或设置SqlParameter

Size:获取或设置列中数据的最大值(以字节为单位)

SqlDbType:获取或设置参数的SqlDbType

Value:获取或设置该参数的值


通过创建SqlParameter对象,并调用ParametersAdd()AddRange()方法,可以进行填充数据集合

例子:

string sql = "insert into TB_01 VALUES(@loginName,@loginPwd)";

SqlParameter[] para = { new new SqlParameter("@loginName",stu.Name),

new SqlParameter("@loginPwd",stu.Pwd)

};

SqlCommand cmd = new SqlCommand(sql,conn);

cmd.Parameters.AddRange(para);

conn.Open();

int ret = cmd.ExecuteNonQuery();



 

使用参数化命令会增加不少代码,但是也带来很多好处:

方便以编程方式调用sql语句

全面提升运行效率(因为纯文本的SQL(SQL硬编码方式),每次分配到的CommandText属性都要被解析,而参数化查询只需解析一次)

参数化命令能够尽力避免SQL注入


调用存储过程


1.不带输出参数:


数据库中存储过程
SqlCommand调用存储过程(return,ouput等)_第1张图片

2.带输出参数

存储过程代码:
SqlCommand调用存储过程(return,ouput等)_第2张图片

SqlCommand调用存储过程(return,ouput等)_第3张图片




SqlCommand调用存储过程(return,ouput等)_第4张图片

这里有一点注意:
Sql Server中return的值只能为整型?我起初返回字符串,在处理返回值的时候直接报异常,直接在DBMS中调用也报错,这点我还真不知道...DBA白当了 整理:SqlCommand调用存储过程(return,ouput等)

照网上的说法:存储过程可返回一个称为返回代码的整型值,以表明过程的执行状态,但对于这说法,我一般都是
return(1),return(2)来表示,而我现在的写法是return 777,这也超过错误代码的范围了,难道就不能return '777'么?好在也不影响我使用,到时候文档里面说明下,注释加上即可

你可能感兴趣的:(SqlCommand调用存储过程(return,ouput等))