7.12 参数化查询

  在Web应用程序的开发过程中,Web安全是非常重要的,现存的很多网站也都存在一些非常严重的安全漏洞,其中SQL注入是非常常见的漏洞,如果将查询语句进行参数化查询,可以减少SQL注入漏洞的概率,参数化查询示例代码如下所示。
+展开
-C#
string strsql = "select * from mynews where id= @id";

  上述代码使用了参数化查询,在存储过程中,参数化是非常常见的,存储过程通过Command对象进行参数的添加和赋值。同样,参数化查询也可以通过Command对象进行添加和赋值,参数化查询过程如下所示。
1)创建一个Command对象。
2)Command对象增加一个参数。
3)通过索引对Command参数进行赋值。
4)执行ExecuteReader方法返回个DataReader对象。
  通过Command对象可以为存储过程,以及参数化查询语句进行参数的添加,示例代码如下所示。
+展开
-C#
        protected void Page_Load(object sender, EventArgs e)
        {
            string str = "server='(local)';database='mytable';uid='sa';pwd='sa'";
            SqlConnection con = new SqlConnection(str);
            con.Open();
            string strsql = "select * from mynews where id = @bh";
            SqlCommand cmd = new SqlCommand(strsql, con);//创建Command对象
            cmd.Parameters.Add("@bh", SqlDbType.Int);//增加参数@bh
            cmd.Parameters[0].Value = 4;//通过索引为参数赋值
            SqlDataReader dr = cmd.ExecuteReader();//执行后返回DataReader对象
            while (dr.Read())//遍历DataReader对象
            {
                Response.Write(dr["title"].ToString()+"<hr>");
            }
        }

  参数化查询能够有效的解决一些安全问题,提高Web应用的安全性。同时,参数化查询能够极大的简化程序设计。只需要通过数值的更改而不需要修改SQL语句,极大的方便了应用程序的维护。

注意:
如果未初始化Parameter数据类型的属性,但设置了Value属性,那么Parameter会自动选择合适的数据类型。

加支付宝好友偷能量挖...


评论(0)网络
阅读(94)喜欢(0)Asp.Net/C#/WCF