SQL中寫入包含有英文單引號“ ' ”失敗問題深入詳解
當前碰到一個問題,在測試編輯信息內容,其中若編輯的內容包含單引號(‘)則寫入Mysql數據庫時寫入失敗,使用如下代碼進行錯誤打印:
if (!this->m_sql_query.prepare(update_string)) { printf(“exec fail—>%s\n”, this->m_sql_query.lastError().text().toStdString().c_str()); } if (!this->m_sql_query.exec()) { printf(“exec fail—>%s\n”, this->m_sql_query.lastError().text().toStdString().c_str()); }
打印出的結果為:exec fail—>syntax error unable to execute statement
查閱相關資料如下所示:
經過分析後發現插入的內容中在編輯SQL語句的時候字符串被從單引號處截斷,導致語法錯誤。
解決辦法:將包含單引號的字符中的(‘)換成(”),就可以瞭。
SQL是用兩個單引號來代替一個單引號的
str = str.replace(” ‘“, ”''“);
到此這篇關於SQL中寫入包含有英文單引號“ ‘ ”失敗問題深入詳解的文章就介紹到這瞭,更多相關SQL中寫入包含有英文單引號“ ‘ ”失敗內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL SQL預處理(Prepared)的語法實例與註意事項
- QT5中使用SQLite的實現方法
- C/C++ Qt 數據庫QSql增刪改查組件應用教程
- SQL註入詳解及防范方法
- Qt操作SQLite數據庫的教程詳解