2012-10-22 145 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变量,它是相同的"