(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();
由於存儲過程是數據庫預編譯的,執行效率高,推薦采用。