zoukankan      html  css  js  c++  java
  • 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里的具体使用,我会在下一篇文章里讲解.

      

  • 相关阅读:
    基本类型传递值与引用类型传递值的区别
    01 基本类型的赋值与引用类型赋值的区别
    模仿51cto搜索框
    使用map将字数组里的对象重新组装
    01day 表单组件 动态绑定变量 导航组件 地图组件 view text是否可以复制 button 上下滚动组件
    POJ1321棋盘问题(暴搜)
    Codeforces Round #620 (Div. 2) C. Air Conditioner
    Codeforces Round #620 (Div. 2) B. Longest Palindrome
    Codeforces Round #620 (Div. 2) A. Two Rabbits
    Codeforces Round #619 (Div. 2) Ayoub's function
  • 原文地址:https://www.cnblogs.com/zhangfengyang/p/4267639.html
Copyright © 2011-2022 走看看