用SQL語句往資料庫某欄位(字元型)中插入字串,但是當該字串中帶有單引號(")時就會出錯!因為插入的字串被從單引號處截斷,造成SQL語句的語法錯誤!
我們在程式設計當中,經常會遇到在操作資料庫時,向表裡插入帶有單引號的字串。如果不作處理程式會報錯,下面看看我們是怎麼的處理它的。
解決方法:遍歷字串,把一個(")換成兩個(" ")就可以了,在C#裡,其實用str.Replace(""", """");就OK了,這是因為SQL是用兩個單引號來代替一個單引號的,下面舉個例子:
private void btAdd_Click(object sender, EventArgs e)
{
string chinese = this.txtChinese.Text.Trim();
string english = this.txtEnglish.Text.Trim();
if (chinese == "")
MessageBox.Show("請輸入中文!");
}
else if (english == "")
MessageBox.Show("請輸入英文!");
else
oleConnection1.Open();
string sql = "Select * From info Where chinese="" + CheckString(chinese) + "" And english="" + CheckString(english) + """;
this.oleCommand1.CommandText = sql;
if (null == oleCommand1.ExecuteScalar())
string sql1 = "Insert Into info(chinese,english) Values("" + CheckString(chinese) + "","" + CheckString(english) + "")";
oleCommand1.CommandText = sql1;
oleCommand1.ExecuteNonQuery();
MessageBox.Show("資訊新增成功!", "提示");
this.txtChinese.Text = "";
this.txtEnglish.Text = "";
MessageBox.Show("資訊新增失敗,中文和英文已經存在了!", "警告");
oleConnection1.Close();
private string CheckString(string str)
string returnStr = "";
if (str.IndexOf(""") != -1) //判斷字串是否含有單引號
returnStr = str.Replace(""", """");
str = returnStr;
return str;
用SQL語句往資料庫某欄位(字元型)中插入字串,但是當該字串中帶有單引號(")時就會出錯!因為插入的字串被從單引號處截斷,造成SQL語句的語法錯誤!
我們在程式設計當中,經常會遇到在操作資料庫時,向表裡插入帶有單引號的字串。如果不作處理程式會報錯,下面看看我們是怎麼的處理它的。
用SQL語句往資料庫某欄位(字元型)中插入字串,但是當該字串中帶有單引號(")時就會出錯!因為插入的字串被從單引號處截斷,造成SQL語句的語法錯誤!
解決方法:遍歷字串,把一個(")換成兩個(" ")就可以了,在C#裡,其實用str.Replace(""", """");就OK了,這是因為SQL是用兩個單引號來代替一個單引號的,下面舉個例子:
private void btAdd_Click(object sender, EventArgs e)
{
string chinese = this.txtChinese.Text.Trim();
string english = this.txtEnglish.Text.Trim();
if (chinese == "")
{
MessageBox.Show("請輸入中文!");
}
else if (english == "")
{
MessageBox.Show("請輸入英文!");
}
else
{
oleConnection1.Open();
string sql = "Select * From info Where chinese="" + CheckString(chinese) + "" And english="" + CheckString(english) + """;
this.oleCommand1.CommandText = sql;
if (null == oleCommand1.ExecuteScalar())
{
string sql1 = "Insert Into info(chinese,english) Values("" + CheckString(chinese) + "","" + CheckString(english) + "")";
oleCommand1.CommandText = sql1;
oleCommand1.ExecuteNonQuery();
MessageBox.Show("資訊新增成功!", "提示");
this.txtChinese.Text = "";
this.txtEnglish.Text = "";
}
else
{
MessageBox.Show("資訊新增失敗,中文和英文已經存在了!", "警告");
this.txtChinese.Text = "";
this.txtEnglish.Text = "";
}
oleConnection1.Close();
}
}
private string CheckString(string str)
{
string returnStr = "";
if (str.IndexOf(""") != -1) //判斷字串是否含有單引號
{
returnStr = str.Replace(""", """");
str = returnStr;
}
return str;
}