我有一個函數在SQLite數據庫的表中執行查詢。我有一個像「你叫什麼名字?」。這是存儲在一個字符串變量讓我們說,我有一個查詢,如「Select * from xyz where question =」'「+ v +''」;。但它拋出一些異常附近的任何解決方案。可以理解的具有特殊字符的SQLite查詢問題
是被示值誤差:whilke編譯:從XYZ選擇*其中quesion = '你叫什麼名字?'
我有一個函數在SQLite數據庫的表中執行查詢。我有一個像「你叫什麼名字?」。這是存儲在一個字符串變量讓我們說,我有一個查詢,如「Select * from xyz where question =」'「+ v +''」;。但它拋出一些異常附近的任何解決方案。可以理解的具有特殊字符的SQLite查詢問題
是被示值誤差:whilke編譯:從XYZ選擇*其中quesion = '你叫什麼名字?'
第一本
v=v.replaceAll("'","\'");
替換字符
然後通過它查詢
"select * from xyz where question='"+v+"'";
給了一槍
不工作。仍然是同樣的問題 –
@ Android殺手它代碼工作嗎? –
試試這個"select * from xyz where question='"+v+"'"
V中所有的單引號與2個單引號替換爲:
String q = "select * from xyz where question = '" + v.replaceAll("'","''") + "'";
不工作的朋友。 –
想我誤解了你的問題:) – Ben
你有沒有嘗試這個
VALUE = DatabaseUtils.sqlEscapeString(VALUE);
"select * from xyz where question="+ VALUE;
不要描述你的代碼,只需粘貼在這裏。指定拋出異常的行。添加重要的異常信息。 –
一般建議:將用戶提供的值直接連接到查詢字符串中(是的,即使您轉義引號)也會導致SQL注入攻擊。有關如何使用各種語言的SQL佔位符(您沒有指定編程語言)來消除此風險,請參閱http://bobby-tables.com/。 –
關於這個具體問題:SQL錯誤是由「什麼」中的流言單引號引起的。其他答案已告訴你如何逃避該報價。如果他們的解決方案沒有爲您解決問題,那麼我們無法進一步幫助您,直到您向我們展示您的代碼,以便我們可以看到問題出在哪裏。 –