C#中產生SQL語句的幾種方式


(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();

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

揀盡寒枝不肯棲,寂寞沙洲。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM