向SQLServer插入單引號問題
SQLServer存在單引號字串與INSERT INTO 語句的' '產生衝突問題。
如何向資料庫插入帶有單引號(')的字串
用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;
}
這裡為什麼要用另一個變數(returnStr)來接收替換後的值呢?不然替換會失效,呼叫Replace()方法不能改變str本身,string物件雖然是引用型別,但它具有很多值型別特徵,比較特殊。
原創:https://blog.csdn.net/david_520042/article/details/11472283
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2739148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 儲存過程單引號問題儲存過程
- awk拼sql時要注意分號,單引號的問題.SQL
- 插入單引號在oracle和informix中的區別OracleORM
- ORACLE 單引號 雙引號Oracle
- linux 單引號,雙引號,反引號Linux
- HTML 單引號與雙引號HTML
- Golang的單引號、雙引號與反引號Golang
- Postgresql中DDL的雙引號問題SQL
- python中單引號,雙引號,多引號區別Python
- Linux Shell 中的反引號,單引號,雙引號Linux
- oracle 中使用單引號(')和雙引號(")Oracle
- Oracle中的 單引號 和 雙引號Oracle
- oracle 裡的單引號與雙引號Oracle
- grep 後加單引號、雙引號和不加引號的區別
- shell 指令碼中雙引號、單引號、反引號的區別指令碼
- Python中 單引號,雙引號和三引號的區別Python
- 【C進階】14、單引號和雙引號
- Jquery單引號和雙引號的使用注意jQuery
- SQL語句中的單引號與雙引號SQL
- Mysql單引號使用MySql
- SQLServer常見問題SQLServer
- linux bash中的引號:單雙引號、反撇號Linux
- 資料插入問題。
- shell中單引號、雙引號、反引號、反斜槓的區別
- 解決Hibernate向MySQL資料庫插入中文亂碼問題MySql資料庫
- 向表中插入中文字元,查詢時亂碼問題字元
- 雙向關係的LOCALCMP中的插入子表資料的問題
- Oracle中單引號和雙引號的區別Oracle
- Linux Shell 單引號 雙引號 使用區別Linux
- PHP中單引號和雙引號的區別PHP
- JS中缺少分號可能引發的問題JS
- 關於 json 單引號和雙引號區別--請使用雙引號JSON
- Sqlserver分析死鎖問題SQLServer
- webstorm中程式碼新增單引號、雙引號快捷鍵WebORM
- Oracle中單引號與雙引號的區別分析Oracle
- sql重複插入問題SQL
- mysql語句中有引號的問題解決方案MySql
- javascript的雙引號和單引號的用法和區別JavaScript