SqlParameter的作用是用来传参,以及防止sql语句注入的。
以前在连接数据库时,我都是像这样做的。new SqlParameter("@name",name)
//D层代码
public class Dao
{
private SQLHelper sqlhelper;
public Dao()
{
sqlhelper = new SQLHelper();
}
public DataTable SelectByName(string name)
{
DataTable dt = new DataTable();
string cmdtext = "new_selectByCaId";
SqlParameter[] para = new SqlParameter[] {
new SqlParameter("@name",name)
};
dt = sqlhelper.ExecuteQueryModel(cmdtext, para, CommandType.StoredProcedure);
return dt;
}
后来,学习到另外一种SqlParameter的方法。
SqlParameter[] para = new SqlParameter[] {
new SqlParameter("@name",SqlDbType.Nvarchar,32)
};
para[0].value=name;
这样写看似是麻烦了,将一条语句就可以写完的步骤,现在需要两条语句。但是却提高了计算机运行的速率。
在没有设置传入参数的长度的前提下,假如每次传入的name长度不同,那么执行sql语句时每次都会重新生成新的执行计划,从而浪费数据库执行时间。而如果@name的长度设置为固定值,那么每次都会执行同一个sql计划。
如果是Int、Float、Bigint,DateTime之类的参数,可以不用指定size属性。