java - 如何在 SQLite 中向表中添加变量?
问题描述
我想要做的是在我的 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)没有这样的列:inputString。
注释代码来自this post的答案。无论有没有它,我都会遇到同样的错误。谷歌搜索没有产生任何可用的答案或示例。我在 Android Studio (java) 中写这个。
解决方案
向表中插入新行的推荐方法insert()
是ContentValues
:
ContentValues cv = new ContentValues();
cv.put("item", variable);
database.insert("tablename", null, cv);
更改"tablename"
为您的表的实际名称。
推荐阅读
- qt - 如何在 Qt 中调用框架
- java - 如何使用java将文件的内容保存为单个字符串
- python - 客户端离开时减少线程数
- vue.js - 电容写入文件到下载文件夹
- sql-server - 从表中删除“Document No_”到“Document No_”的记录?
- cdo-climate - 在 cdo 中使用双线性插值重新网格化 NetCDF 文件
- csv - 如何在perl中删除不可打印的字符^@
- mongodb - 无法从 Intellij Idea Ultimate/DataGrip 连接到 mongo atlas
- asp.net-mvc - Asp.Net MVC 在一个视图中显示两个表
- jooq - jooq 的 quarkus 结构