建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > asp.net教程 >

ADO.NET基础琐碎总结-----参数化查询

时间:2012-04-02 14:10来源: 作者: 点击:
参数化查询(Parameterized Query )是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。下面将重点总结下Parameter构建的几种常用方法。
参数化查询(Parameterized Query )是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。下面将重点总结下Parameter构建的几种常用方法。

      说起参数化查询当然最主要的就是如何构造所谓的参数:比如,我们登陆时需要密码和用户名,一般我们会这样写sql语句,Select * from Login where  username= @Username and password = @Password,为了防止sql注入,我们该如何构建@Username和@Password两个参数呢,下面提供六种(其实大部分原理都是一样,只不过代码表现形式不一样,以此仅作对比,方便使用)构建参数的方法,根据不同的情况选用合适的方法即可:

     说明:以下loginId和loginPwd是户登陆时输入登陆用户名和密码,DB.conn是数据库连接,用时引入using System.Data.SqlClient命名空间

      方法一:

SqlCommand command = new SqlCommand(sqlStr, DB.conn);
command.Parameters.Add("@Username", SqlDbType.VarChar);
command.Parameters.Add("@Pasword", SqlDbType.VarChar);
command.Parameters["@Username"].Value = loginId;
command.Parameters["@Pasword"].Value = loginPwd;



      方法二:

SqlCommand command = new SqlCommand();
command.Connection = DB.conn;
command.CommandText = sqlStr;
command.Parameters.Add(new SqlParameter("@Username", loginId));
command.Parameters.Add(new SqlParameter("@Pasword", loginPwd));



      方法三:

Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);
cmd.parameters.add("@Username",DbType.varchar).value=loginId;
cmd.parameters.add("@Pasword",DbType.varchar).value=loginPwd;



      方法四:

Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);
cmd.parameters.addwithvalue("@Username",loginId);
cmd.parameters.addwithvalue("@Pasword",loginPwd);



      方法五:

  Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn); 

  SqlParameter para1=new SqlParameter("@Username",SqlDbType.VarChar,16);
  para1.Value=loginId;
  cmd.Parameters.Add(para1);
  SqlParameter para2=new SqlParameter("@Pasword",SqlDbType.VarChar,16);
  para2.Value=loginPwd;
  cmd.Parameters.Add(para2);



      方法六:

 SqlParameter[] parms = new SqlParameter[]
 {
     new SqlParameter(@Username, SqlDbType.NVarChar,20),
     new SqlParameter(@Pasword, SqlDbType.NVarChar,20),
 };
 SqlCommand cmd = new SqlCommand(sqlStr, DB.conn);
 // 依次给参数赋值
 parms[0].Value = loginId;
 parms[1].Value = loginPwd;
//将参数添加到SqlCommand命令中
foreach (SqlParameter parm in parms)
{
    cmd.Parameters.Add(parm);
}
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片