C#的关于SQLparameter的问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:25:27
private SqlCommand CreateCommand(string ProcName, SqlParameter[] prams)
{
this.Open();
SqlCommand cmd = new SqlCommand(ProcName, con);
cmd.CommandText = CommandType.Text;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter)/*这个Add函数与下面的有什么区别,另把这些参数添加进去有什么用*/;
}
cmd .Parameters .Add (new SqlParameter ("ReturnValue",SqlDbType .Int ,4,ParameterDirection .ReturnValue ,false ,0,0,string.Empty ,DataRowVersion .Default ,null ));

}
return cmd;
}

前边那种是正常的传参方法.
下边的cmd.parameters.add(new parameter());是匿名添加对象.
效果一样,只是下边这种方法省了前边的命名过程.
这种匿名创建,是很多地方通用的.
就好比有一个方法void a(int i);
需要传一个参数,你可以直接 a(k); // int k = 2;
也可以 a(2); 意思是一样的.

而paramter 的作用,英文就是参数,,,他是给查询语添加参数
比如说.有一个语句: "select * from 表1 where uid = @uid";
@uid 就是一个sql参数,但是在C#里表示,就需要用parameter来给参数赋值

有些时候,只能用参数的方法,比如说:
你想把一个图片序列化保存到数据库中.
sql语句: "insert into 表1 values(@img)";
这个时候,是没有人去手动写那个二进制数据的,所以可以用一个 parameter来给这个@img赋值

SqlParameter img = new SqlParameter("@img",SqlDbType.Image);
img.Value = ...;

数据库博大精深,加油!

没有多大区别,只不过是个人编程习惯的问题

都是给SqlCommand添加参数 没有区别

用Sql参数可以防止SQL攻击