参数化的sql

        我们原先写的sql语句总是把条件直接拼进去,这样每次的sql都是不同的,但这些sql除了条件部分不同外,其他都是一样的,sqlserver在解析sql语句的时候分了几个步骤:
1 语法分析
2 生成一个执行计划
执行计划就是执行的路径,完成一个任务可以有好多条路径的,sqlserver会通过复杂的分析,来取的最优化的执行计划
3 有了执行计划后,就是实际执行这个语句了
       sql执行的这3步都是要花时间的,为了提高执行的效率,sqlserver会把sql的执行计划缓存,只要sql相同就不再生成执行计划,而是从缓存中去取了,这样就效率高了。
刚才说了,只是条件不同的那些语句,是可以通过一种方法来使sqlserver来使用缓存的执行计划的,这样我们的sql的效率就提高了,我要给你讲的就是如何使用参数化的sql的方法。

 public void ModifyPwd()
        {
            //'@Userpwd' 的单引号不需要
            string sql = "update UserInfo set Userpwd=@Userpwd where Userid=@userName";
            SqlParameter[] par = new SqlParameter[2];
            SqlParameter par1 = new SqlParameter();
            par1.ParameterName = "Userpwd";
            //这里的数据类型必须和数据库的字段类型一致
            par1.SqlDbType = SqlDbType.VarChar;
            par1.Value = m_pwd;
            par[0] = par1;

            SqlParameter par2 = new SqlParameter();
            par2.ParameterName = "userName";
            par2.SqlDbType = SqlDbType.VarChar;
            par2.Value = m_userName;
            par[1] = par2;
            SqlHelper.ExecuteNonQuery(sql,par);
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值