程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#中sqlhelper類的編寫(二),

c#中sqlhelper類的編寫(二),

編輯:C#入門知識

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裡的具體使用,我會在下一篇文章裡講解.

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved