在 SQLite Android Studio 中插入时没有这样的列错误 [重复]

问题描述 投票:0回答:1

代码:

//creating an sqlite query and setting column names 
along with data types.
String query = "CREATE TABLE tableMon (notes TEXT)";

//calling a exec sql method to execute sql query
db.execSQL(query);

//after adding....passing content values to the table
String insert = "INSERT INTO tableMon (notes) VALUES ( 
" + values + " )";
db.execSQL(insert);

错误: tableMon 在“INSERT INTO tableMon (notes) VALUES (notes=hello)”中没有名为 notes 的列

我尝试在列名附近添加和删除空格并添加变量而不是直接使用表名和列名。 尽管!没有得到任何预期的结果。

java android-sqlite
1个回答
-1
投票

您的问题是插入的值是非数字的,因此必须用单引号引起来。所以:-

String insert = "INSERT INTO tableMon (notes) VALUES ('" + values + "' )";

但是,上面的代码容易受到 SQL 注入的影响,所以最好使用:-

String insert = "INSERT INTO tableMon (notes) VALUES (?)";
db.execSQL(insert,new String[]{values};

在这种情况下,当它被 SQLite 绑定绑定时,值将被适当地包含起来。

然而,另一种方法是使用 SQLiteDatabse insert 方法。这样做的好处是

  • 它构建底层 SQL,并且
  • 绑定值,
  • 并返回插入行的 rowid 或 -1 如果无法插入该行。

在你的情况下你可以使用:-

ContentValues cv = new ContentValues();
cv.put("notes",values);
long result = db.insert("tableMon",null,cv);
© www.soinside.com 2019 - 2024. All rights reserved.