2012-10-22 146 views
0
String ans1= "Apple"; 

myDb.execSQL("INSERT INTO " + 
       TABLE_NAME + " Values (ans1);"); 

它只是不這樣工作..爲什麼?我需要一個簡單的方法來做到這一點,我不想讓類似我這樣的初學者感到困惑的類可能嗎?將變量插入sql值

回答

0

值應該是這樣

值( 「+ ANS1 +」);

觀察ans1是內部報價。

注意:原始的sql語句很容易出現sql注入攻擊。

+0

數據安全性是我的氪石。在開發網絡應用程序時,它給我帶來了許多不眠之夜。在開發像這樣的本地數據庫時,我不會多加考慮。我應該更關心它嗎? –

4

試試這個例子:

public long insertValue(String value1, String value2) { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_VALUE1, value1); 
     initialValues.put(KEY_VALUE2, value2); 

     return mDb.insert(DATABASE_TABLE, null, initialValues); 
    } 
+0

那裏的KEY_VALUE是什麼意思? – peace

+0

我在頂部聲明瞭我的列('public static final String KEY_VALUE1 =「value1」;') – Sieryuu

0

要注入變量的值到你所需要的變量+變量前停止報價+再次打開引號中的SQL語句。對於字符串值,您還需要在變量周圍添加單引號。

myDb.execSQL("INSERT INTO " + 
      TABLE_NAME + " Values ('" + ans1 + "');"); 
3

你的INSERT語句應閱讀像

"INSERT INTO " + TABLE_NAME + " VALUES ('" + ans1 + "');" 

注意單引號那套ANS1,如果要插入一個字符串值轉換成SQL表應當包裝在單引號。

+0

@Lucifer,只是有興趣知道爲什麼你編輯我的答案只刪除「希望幫助」。我知道Stack Overflow,並且一直很友好。 –

+0

當然,不應該添加標籤行,這就是爲什麼我刪除它,沒有別的。 – Lucifer

0

您在表中插入變量的值,因此你必須使用變量ANS出"(雙COTS)的,像下面,

String ans1= "Apple"; 

myDb.execSQL("INSERT INTO " + TABLE_NAME + " Values ('" + ans1 + "');"); 

如您還沒有使用內部TABLE_NAME變量,它是相同的"