我需要使用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()方法插入记录?全部内容,希望文章能够帮你解决android – 如何使用rawQuery()方法插入记录?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)