如何在 SQLite 中向表中添加变量?
Posted
技术标签:
【中文标题】如何在 SQLite 中向表中添加变量?【英文标题】:How to add a variable to a table in SQLite? 【发布时间】:2021-10-07 11:30:58 【问题描述】:我想要做的是在我的 SQL 数据库中存储一个 ArrayList,并且我已经使用此代码来执行此操作:
try
SQLiteDatabase database = this.openOrCreateDatabase("arrayList", MODE_PRIVATE, null);
Gson gson = new Gson();
String inputString = gson.toJson(itemOne);
Log.i("InputString", inputString);
database.execSQL("CREATE TABLE IF NOT EXISTS savedTasks(item VARCHAR)");
ContentValues cv = new ContentValues();
cv.put("item", inputString);
database.insert("savedTasks", null, cv);
Cursor resultSet = database.rawQuery("Select * from savedTasks", null);
resultSet.moveToFirst();
String getData;
if(resultSet.moveToNext())
getData = resultSet.getString(0);
Type type = new TypeToken<String>() .getType();
arrayLists.add(gson.fromJson(getData, type));
adapter.notifyDataSetChanged();
Log.i("ArrayLists", String.valueOf(arrayLists));
catch (Exception e)
e.printStackTrace();
我一直收到错误,E/SQLiteLog: (1) no such column: inputString.
注释代码来自这篇文章的答案。无论有没有它,我都会遇到同样的错误。谷歌搜索没有产生任何可用的答案或示例。我在 android Studio (java) 中写这个。
【问题讨论】:
这能回答你的问题吗? Android SQLite rawquery parameters @Dai 不,我需要一种将字符串变量添加到数据库的方法,而不是找到它。除非我误解了那篇文章的内容? 【参考方案1】:向表中插入新行的推荐方法是insert()
和ContentValues
:
ContentValues cv = new ContentValues();
cv.put("item", variable);
database.insert("tablename", null, cv);
将"tablename"
更改为您的表的实际名称。
【讨论】:
我添加了那个,但我仍然得到同样的错误。你可以看到我在原始帖子中所做的——据我所知,该代码没有给我任何错误,但我可能写错了。 @easybeak 您的代码出现错误 no such column: inputString。删除database.execSQL("INSERT INTO savedTasks VALUES (inputString)");
并取消注释上面的 3 行。
我不再收到错误,但数据库的内容没有改变。最终结果仍然只是一个包含“inputString”的字符串。
变量inputString的值是多少?我看到您将 gson.toJson(itemOne) 分配给它。
这是一个 ArrayList 已被转换为字符串:["This","Is"]
以上是关于如何在 SQLite 中向表中添加变量?的主要内容,如果未能解决你的问题,请参考以下文章