向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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190419]bash單雙引號問題.txt
- HTML 單引號與雙引號HTML
- Golang的單引號、雙引號與反引號Golang
- linux bash中的引號:單雙引號、反撇號Linux
- Linux Shell 單引號 雙引號 使用區別Linux
- 【C進階】14、單引號和雙引號
- JS中缺少分號可能引發的問題JS
- SQLServer IDENTITY_INSERT問題SQLServerIDE
- awk 技巧之輸出單引號和雙引號
- Oracle中單引號和雙引號的區別Oracle
- 處理SQLServer errorlog滿問題SQLServerError
- SQLServer記憶體問題分析SQLServer記憶體
- SQLServer2008 除錯問題SQLServer除錯
- 提取分割單引號 ‘ ‘ 之間的內容且不重複分割單引號 pythonPython
- Weblogic接收SIGQUIT資訊號引發服務中止問題WebUI
- shell中定義變數用雙引號和單引號以及不用引號的區別變數
- 關於kindeditor插入程式碼問題
- mysqldump 欄位值帶單引號MySql
- sqlserver 賦予許可權的問題SQLServer
- SQLServer插入資料到有自增列的表SQLServer
- 查詢SQLSERVER版本號SQLServer
- 一個單引號引發的 MySQL 效能損失MySql
- oracle資料庫--Oracle雙引號和單引號的區別小結Oracle資料庫
- Linux中單引號和雙引號的使用方法及注意事項!Linux
- HTTP 請求中 Token 引數帶引號導致後臺無法識別問題HTTP
- mybase 自動插入很多空行的問題
- 無題號 分配問題 題解
- CSS 單雙引號應用規範CSS
- 單向迴圈連結串列——查詢、刪除、插入結點
- 把TXT文字匯入SQLServer常見問題SQLServer
- 陣列拆分成單引號逗號隔開的字串陣列字串
- 解決sqlserver資料庫單一使用者無法刪除的問題SQLServer資料庫
- MYSQL timestamp NOT NULL插入NULL的報錯問題MySqlNull
- 併發請求的重複插入問題
- 如何向大牛請教問題?
- SQLServer 2017 install for Windows server 2012_問題彙總SQLServerWindows
- SqlServer2008R2登入出現問題SQLServer
- SqlServer資料庫中文亂碼問題解決SQLServer資料庫