我目前正在研究 SQLite,我发现它使用 ContentValues 等各种类进行插入和更新......我想知道我是否必须遵循给定的方式或者我可以编写一个普通的 SQL 查询并使用 db.execSQL() 方法执行它们?它会不会给我的数据库带来任何不一致,因为所有这些“额外”步骤不会停止查询流程,我觉得如果我们直接使用查询会更快。
问问题
855 次
2 回答
1
您可以使用db.execSQL
除了select
命令或任何其他返回数据的 SQL 命令(db.rawQuery()
用于此目的)执行您想要的任何 SQL 命令。使用的类是帮助类,使您可以轻松地操作 DB(尝试插入 100 行,每行 20 列ContentValues
,db.execSQL
您就会明白这一点)。对于小型表,它不会有太大差异(并且您不会导致不一致),但是,对于具有依赖于用户界面或使用计算的输入的大型表,拥有像 ContentValues 这样的类及其辅助方法可能很有用。
于 2012-10-15T17:38:37.100 回答
0
是的,你绝对可以像使用这种方式使用
myDB.execSQL("INSERT INTO MyTable VALUES ('fffff', 'numb', 20)");
插入值,但仅当您将数据库用于小型查询时。使用直接方法也存在一些缺陷,这些缺陷使用 ContentValues 删除 例如,尝试使用此方法将 blob 插入数据库,在将检索到的数据转换为位图时,您将得到一个空位图。但是当您使用 ContentValues 插入时,您将获得正确的数据,即您将能够将其转换为位图。
于 2012-10-15T17:44:14.667 回答