程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#中構造SQL語句的方式

C#中構造SQL語句的方式

編輯:C#基礎知識

(1)拼接產生SQL語句:

       string sql = "insert into czyb(yhm,mm,qx) values('" + txtName.Text + "','" + txtPassword.Text + "','" + cmbPriority.Text + "')";
       OleDbCommand cmd = new OleDbCommand(sql, conn);

       這種方法寫法比較復雜,且安全性低,容易遭受SQL注入攻擊。

(2)用string.Format方法:

      string sql = string.Format("insert into czyb(yhm,mm,qx) values('{0}','{1}','{2}')", txtName.Text, txtPassword.Text, cmbPriority.Text);

      只是可讀性優於第(1)種。

(3)用參數化SQL語句:

      string sql="insert into czyb(yhm,mm,qx) values (@yhm,@mm,@qx)";
      OleDbCommand cmd = new OleDbCommand();
      cmd.CommandText = sql;
      cmd.Parameters.AddWithValue("@yhm", txtName.Text);
      cmd.Parameters.AddWithValue("@mm", txtPassword.Text);
      cmd.Parameters.AddWithValue("@qx", cmbPriority.Text);
      cmd.Connection = conn;
      conn.Open();
      cmd.ExecuteNonQuery();

     代碼結構清楚,對於不支持存儲過程的數據庫(如Access),推薦采用本方法。

(4)如果數據庫支持存儲過程(如SQL Server),可以調用存儲過程執行SQL:

        SqlConnection conn = new SqlConnection(txtConn);
        SqlCommand cmd = new SqlCommand("SearchContact", conn);  //存儲過程名稱為SearchContact
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);   //傳入參數
        cmd.Parameters["@name"].Value = txtName.Text.Trim();

       由於存儲過程是數據庫預編譯的,執行效率高,推薦采用。

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