gpt4 book ai didi

android - 如何使用 rawQuery() 方法插入一条记录?

转载 作者:IT王子 更新时间:2023-10-29 06:22:09 24 4
gpt4 key购买 nike

我需要使用 rawQuery() 方法存储一条记录,因为我想插入当前日期和时间 (datetime()),但我还需要插入包含引号的字符串。

所以我写了这段代码:

String sql="INSERT INTO sms VALUES ( null, ?1, ?2, ?3, datetime())";
dbw.rawQuery(sql, new String[]{str1,str2,str3});

但它不存储任何东西……怎么了?

[编辑]

这样我不会出错,但是没有插入记录。

String mitt="mitt", dest="dest", text="text";
String sql="INSERT INTO sms VALUES ( null, ?, ?, ?, datetime('NOW'))";
dbw.rawQuery(sql, new String[]{mitt,dest,text});

此时,唯一可以插入记录(有引号问题)的方法是execSQL(String s)

最佳答案

SQLite 没有原生的日期时间数据存储类型。它可以存储日期的字符串或整数表示形式。

要转换您的值,您可以使用 Sqlite Date and Time functions documentation 中详述的日期时间函数

您最初的尝试几乎是正确的,但您的 datetime() 函数调用需要参数 'NOW'

String sql="INSERT INTO sms VALUES ( null, ?, ?, ?, datetime('NOW'))";

您还应该调用 execSQL 而不是 rawQuery ,它期望返回一个记录集。

dbw.execSQL(sql, new String[]{str1,str2,str3});

如果不插入所有值,您还可以通过在查询中的表名后插入字段列表来指定要插入数据的各个列

String sql = "INSERT INTO sms(f1, f2, f3, f4)"
+ "VALUES ( null, ?, ?, ?, datetime('NOW'))";

另一个可能的选项是 using a default timestamp in SQLite , 虽然我没有在 android 中尝试过。

关于android - 如何使用 rawQuery() 方法插入一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com