C#的关于SQLparameter的问题

privateSqlCommandCreateCommand(stringProcName,SqlParameter[]prams){this.Open();SqlCom... 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;
}
展开
 我来答
猿始森林
2009-04-30 · TA获得超过1146个赞
知道小有建树答主
回答量:999
采纳率:0%
帮助的人:676万
展开全部
前边那种是正常的传参方法.
下边的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 = ...;

数据库博大精深,加油!
kimbosung
2009-04-30 · 超过19用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:52.6万
展开全部
没有多大区别,只不过是个人编程习惯的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友57cd287e5
2009-04-30 · TA获得超过277个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:163万
展开全部
都是给SqlCommand添加参数 没有区别

用Sql参数可以防止SQL攻击
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式