2010-03-27 32 views
0

舊的查詢工作,新的沒有。 Android的logcat給我錯誤爲: 失敗1:沒有這樣的列abcname。 abcname是我嘗試從android中的彈出窗口獲得的editview的值。sql查詢的問題,變量值沒有插入本身

我知道第一個查詢會在字段中插入這些值,因爲它們是以單引號括起來的。我在adb shell中輸入的相同查詢正常工作。所以我複製了查詢,並刪除了對應於字段名稱的數據,並插入了變量名稱。在試圖運行,我得到上述錯誤。

舊的查詢:

MapsActivity.myDB.execSQL("INSERT INTO " 
    +MapsActivity.TableName 
    + " (name, user_comment, latitude, longitude) " 
    + " VALUES ('tagName','tagComment','tagLatitude','tagLongitude');"); 

新的查詢:

MapsActivity.myDB.execSQL("INSERT INTO " 
    +MapsActivity.TableName 
    + " (name, user_comment, latitude, longitude) " 
    + " VALUES ("+tagName +",'tagComment','tagLatitude','tagLongitude');"); 

是什麼問題?

回答

1

如果tagName的值例如爲​​,那麼您的查詢將擴展爲... VALUE (abc,'tagComment',...。它缺少單引號。

像這樣構建SQL會給業務帶來不良影響。改用SQLite的參數綁定機制。

+0

@ 1舊的查詢工作正常。它是不工作的第二個查詢。我必須從varible取值,因此我不能使用單引號,我需要替換tagName的值。 @ 2尋找參數綁定 thnx! – Kaustubh 2010-03-27 10:16:45

+0

甚至更​​好:在SQLiteDatabase上使用'insert()'方法,所以你沒有生成任何你自己的SQL。 – CommonsWare 2010-03-27 11:08:28

0

我建議創建一個簡單的活動記錄數據庫實現。這裏是一個偉大的教程simple sqlite active record for android。這增加了一些額外的時間,但在開發時節省了您的時間。

+0

ohkay,望着它:) 謝謝! – Kaustubh 2010-03-28 03:35:21

0

用雙引號括住雙引號?

...(「‘+標籤名+’」 ......

+0

nope,很混亂。即時嘗試聲明的查詢,字段和值,作爲一個字符串,價值取代。讓我們看看帶我的地方。 – Kaustubh 2010-03-28 03:51:42