关于ASP.NET中Sqlcommand对象传参

来源:百度知道 编辑:UC知道 时间:2024/05/11 00:48:15
Sqlcommand对象有三种方法可以对数据库进行操作。那么它们之间有什么区别么?

第一种:
Sqlcommand cmd=new sqlcommand("insert into person values('p.pID','p.pName','p.pAge')",con);
cmd.ExecuteNonQuery();

第二种:
Sqlcommand cmd=new sqlcommand("insert into person values(@pID,@pName,@pAge)",con);
SqlParameter para=new SqlParameter("@pID",SqlTybe.Varchar,10);
para.values=p.pID;
cmd.parameters.Add(para);
~~~~~~~~~~~~~~~~~~~~`~~~~~~~~~~~;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
cmd.ExecuteNonQuery();

第三种方法:
Sqlcommand cmd=new Sqlcommand("insert into person values(@pID,@pName,@pAge)",con);
cmd.Parameters.AddWithValue("@p_ID",p.pID);
cmd.Parameters.AddWithValue("@p_Name", p.pName);
cmd.Parameters.AddWithValue("@p_Age", p.pAge);
cmd.Parameters.AddWithValue("@p_Sex", p.pSex);
cmd.ExecuteNonQuery();
为什么,我看到很多书上都是用的第二种和第三种方法,而第一种的代码最少,

cmd.ExecuteNonQuery();
返回数据库中受影响的行数
第一个方法是直接将要插入到数据库中的值写在SQL语句中,这种方法不灵活
第二个方法和第三个方法都是使用了SQL输入参数,将SQL语句中的值作为变量,从外部传入,并写入数据库.不同的是第三个方法使用的是sqlparameters数组,第二个方法只有一个变量.
推荐使用第三个方法.

第一个容易SQL注入,不安全,而且必须要把每一个字段的值都写好才行,如果你要一次插入1000条数据,就要写1000次SQL语句,而第二种或第三种就只需要写方法名,传入参数就可以了.

第一种容易sql注入!非常的不安全