你不應該使用SQLS喜歡這個。它很容易受到SQL注入攻擊。當您像使用它一樣使用它時,可以竊取數據庫中的機密信息,甚至刪除您的表格,數據等。有關詳細信息,請參閱SQL Injection on wiki
您應該使用參數化SQL查詢。這樣你就可以避免注入攻擊,我相信編寫sql更實用。
在你的情況下,輸入單個'字符到其中一個文本框會導致你的查詢得到異常。要解決這個問題,只需使用參數。
對於你的情況,你可以寫這樣的東西。
string sqlString = @"INSERT INTO quotedetails (
name,
address,
district,
date,
forto,
refto,
total)
VALUES (
@PAR_name,
@PAR_address,
@PAR_district,
@PAR_date,
@PAR_forto,
@PAR_refto,
@PAR_total)";
MySqlCommand cmd1 = new MySqlCommand(sqlString, conn);
cmd1.Parameters.AddWithValue("PAR_name", txttoname.Text);
cmd1.Parameters.AddWithValue("PAR_address", txttoaddress.Text.Replace("\r\n", "<br />"));
cmd1.Parameters.AddWithValue("PAR_district", txtdistrict.Text);
cmd1.Parameters.AddWithValue("PAR_date", dateTimePicker1.Value.Date);
cmd1.Parameters.AddWithValue("PAR_forto", txtfor.Text);
cmd1.Parameters.AddWithValue("PAR_refto", txtref.Text);
cmd1.Parameters.AddWithValue("PAR_total", txttotal.Text);
請注意,我用的前綴PAR_我的SQL參數,它只是你可以使用或跳過PAR_前綴沒有關係公約,它是所有關於命名習慣。
另外;在參數化查詢中,您不需要將所有值轉換爲字符串。您可以使用DateTime作爲日期字段,或者您可以傳遞int變量,而無需像以前那樣使用ToString()。
首先正確轉義您的輸入。 – shmosel
請讓我簡單解釋一下。因爲我對數據庫很陌生。 @shmosel – Mohankumar