简单的问题,但我找不到蚂蚁半体面的文件。是的,所以我创建了我的SQLite数据库,但它有两个问题或一个取决于你如何看待它!数据库创建正常,我可以在基本列表视图中显示数据,但是在更改电话/模拟器的方向时,插入语句再次运行并复制所有记录。我猜测这与放在OnCreate()方法中的所有代码有关。 我的主要问题是如何执行INSERT UNIQUE或查询数据库以查看记录是否存在?我只能在Android平台上找到关于SQLite数据库参数的任何好文档。
任何帮助都很有帮助!
干杯
答案 0 :(得分:6)
SQLite有一个INSERT OR REPLACE
命令(简称REPLACE
,或使用SQLiteDatabase.replace()
)可以做你想做的事。
但是我建议你的应用程序不应该在每次创建Activity时重新插入数据库,除非确实需要,所以你可能想要考虑更改设计。
答案 1 :(得分:2)
你应该使用Android SDK中已经存在的DatabaseUtils .stringForQuery()静态方法来轻松检索一个值,这个例子适用于String
bot,还有{{1}的方法}}
Long
在db上运行查询并返回第一行第一列中的值的实用程序方法。
像
这样的东西stringForQuery(SQLiteDatabase db, String query, String[] selectionArgs)
此示例是获取字符串值,但您可以轻松调整以获得String myString=DatabaseUtils.stringForQuery(getDB(),query,selectionArgs);
值,并且您的查询应该类似
Long
如果返回的数字大于零,则该字段已存在于数据库中。
还要查看处理方向更改的代码。
更新:
在API 11及更高版本上,您还可以使用select count(*) from mytable where field1='stringtocheckagainst'
函数直接获取(已过滤)行的数量。
DatabaseUtils.queryNumEntries
答案 2 :(得分:2)
有一件事是您需要处理您的方向更改问题,在每次方向更改时访问数据库会消耗很多。
第二件事,关于检查重复记录问题,您可以将列定义为唯一,如
CREATE TABLE table_name(column_definition, unique(column_names) ON CONFLICT replace);` hen
您可以像往常一样执行插入,db将确保不存在重复项。