如何在 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 中向表中添加变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在SQL中向表中添加“X”行?

如何从视图中向表中插入值

如何提高在SSIS中向表中插入数据的性能

SQL中向表中添加的字符都变成问号了,啥情况?怎么处理?

T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“......

如何在 PHP 中向表行添加多个类? [关闭]