C++Builder参数化查询

SQL参数化查询,即在SQL查询字符串中使用变量,在C++Builder中方法如下:

AnsiString  strSql = "select * from LoginUser where StationID = :a\
        and UserID= :b and UserPwd= :c ";

        m_pAdo->Active = false;
        m_pAdo->SQL->Clear();
        m_pAdo->SQL->Text = strSql;
        m_pAdo->Parameters->ParamByName("a")->Value = AnsiString(stLogin.szStationID).Trim();
        m_pAdo->Parameters->ParamByName("b")->Value = AnsiString(stLogin.szUserName).Trim();
        m_pAdo->Parameters->ParamByName("c")->Value = AnsiString(stLogin.szUserPassword).Trim();
        m_pAdo->Active = true;

注意:
(1)字段为字符串,不需求加''
(2)参数不要与字段名字相同,大小写好象也不行
(3)Access和SqlServer中的变量都一样,用:开头
采用参数化查询的好处是,可以防SQL注入。
C#参数化查询代码如下:

using(SqlConnection conn= new SqlConnection(@"Data Source=.\SQLEXPRESS;
AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=true;User Instance=True"))
{
    using(var cmd = conn.CreateCommand())
    {
	   cmd.CommandText =" select count(*) from t_users where UserName=@un and Passwrod=@p";
	   cmd.Parameters.Add(new SqlParameter("un","admin"));
	   cmd.Parameters.Add(new SqlParameter("p","123"))
	   int i = Convert.ToInt32(cmd.ExecuteScalar());
	   if(i > 0)
	   {
		   Console.WriteLine("登录成功!");
	   }
	   else
	   {
		   Console.WriteLine("用户名或者密码错误!");
	   }
    }
}

C#和SqlServer组合开发,参数前面加@

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值