首页 > 学院 > 开发设计 > 正文

c#中sqlhelper类的编写(二)

2019-11-17 02:35:25
字体:
来源:转载
供稿:网友

c#中sqlhelper类的编写(二)

  上一篇文章讲了简易版的SqlHelper类的编写,我们在这里就上一篇文章末尾提出的问题写出解决方案.

  sql语句注入攻击已经是众所周知的了.我们如何在C#中保护自己的数据库不被这样的方式攻击呢?

  不用担心,c#中已经提供了很好的解决方案,那就是 SqlParameter类.

  如何使用它呢?

  

class SqlHelper{public object ExecuteScalar(string sql,Parameter [] parameters)//这一这里增加了一个参数,是个Parameter类型的数组.  using(SqlConnection conn = new SqlConnection(connStr))   {    conn.Open();    using(SqlCommand cmd = conn.CreateCommand())    {      cmd.CommandText = sql;      foreach( Parameter param  in parameters)//遍历传进来的数组,把元素一一添加到查询中      {        cmd.Parameters.add(param);      }      SqlDataAdapter adapter = new SqlDataAdapter(cmd);//数据适配器把查询作为自己的一个属性      DataSet dataset = new DataSet();//建立缓存      adapter.Fill(dataset);//把数据存放到缓存中.      return dataset;//返回数据集合    }   }}

  上面的例子使用了Parameter类的方法,完成对SQL语句的保护.防止了SQL注入.

  但是还有一点,在方法中我们定义了一个数组作为参数,那如果用户传进来的不只是一个数组呢?

  这时候就要用到可变长度参数这个概念的东西了.

  可变长度参数的定义方式:

static int sum(int[] arr)//这是一个简单的固定参数长度的函数定义.{  int sum = 0;  foreach(int i in arr)  {    result += i;  }  return result;}static int sum1(param int[] arr)//这是一个简单的可变参数长度的函数定义{  int result = 0;  foreach(int i in arr)  {    result += i;  }  return result;}static void Main(string[],args){  int[] array1 = new int[]{1,2,3,4,5};  sum(array1);//我们用固定参数长度方法,必须传一个数组进去  sum1(2,4,6,8,10);//我们用可变参数长度方法,可以随便传数字进去,函数会自动把他们加入到自己的数组参数中.}

  今天先写到这里.可变长度参数在SqlHelper里的具体使用,我会在下一篇文章里讲解.

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表