2011-08-25 33 views
0

我有一個函數在SQLite數據庫的表中執行查詢。我有一個像「你叫什麼名字?」。這是存儲在一個字符串變量讓我們說,我有一個查詢,如「Select * from xyz where question =」'「+ v +''」;。但它拋出一些異常附近的任何解決方案。可以理解的具有特殊字符的SQLite查詢問題

是被示值誤差:whilke編譯:從XYZ選擇*其中quesion = '你叫什麼名字?'

+0

不要描述你的代碼,只需粘貼在這裏。指定拋出異常的行。添加重要的異常信息。 –

+2

一般建議:將用戶提供的值直接連接到查詢字符串中(是的,即使您轉義引號)也會導致SQL注入攻擊。有關如何使用各種語言的SQL佔位符(您沒有指定編程語言)來消除此風險,請參閱http://bobby-tables.com/。 –

+0

關於這個具體問題:SQL錯誤是由「什麼」中的流言單引號引起的。其他答案已告訴你如何逃避該報價。如果他們的解決方案沒有爲您解決問題,那麼我們無法進一步幫助您,直到您向我們展示您的代碼,以便我們可以看到問題出在哪裏。 –

回答

1

第一本

v=v.replaceAll("'","\'"); 
替換字符

然後通過它查詢

"select * from xyz where question='"+v+"'"; 

給了一槍

+1

不工作。仍然是同樣的問題 –

+0

@ Android殺手它代碼工作嗎? –

0

試試這個"select * from xyz where question='"+v+"'"

+0

看到我的問題我已經給出了 –

+0

看到你的code.there與你的我的差別 – Rasel

+0

沒有區別。如果你願意幫忙找出答案。 –

0

V中所有的單引號與2個單引號替換爲:

String q = "select * from xyz where question = '" + v.replaceAll("'","''") + "'"; 
+0

不工作的朋友。 –

+0

想我誤解了你的問題:) – Ben

2

你有沒有嘗試這個

VALUE = DatabaseUtils.sqlEscapeString(VALUE); 
"select * from xyz where question="+ VALUE;