使用SqlParameter时参数为什么要设置长度

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属性。

发布了62 篇原创文章 · 获赞 39 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/liangjiabao5555/article/details/102678709