android sqlite数据库中rawquery和execSQL之间的区别

时间:2012-03-12 12:30:02

标签: android sqlite

使用rawquery和execSQL之间的确切区别是什么? 在android活动中编写查询时,何时使用rawquery以及何时使用execSQL?

2 个答案:

答案 0 :(得分:80)

来自API文档:


void execSQL (String sql)

  

执行一个非SELECT的SQL语句或任何其他返回数据的SQL语句。

void execSQL (String sql, Object[] bindArgs)

  

执行一个非SELECT / INSERT / UPDATE / DELETE的SQL语句。

文档不一致,但它们的行为都相同。后者的文档更深入。


Cursor rawQuery (String sql, String[] selectionArgs)

  

运行提供的SQL并在结果集上返回一个Cursor。


rawQuery的用途是:

execSQL的用途是:

  • 您有数据库的“说明”。与CREATE TABLE(或任何其他CREATE语句(例如CREATE INDEX),DROPPRAGMA设置属性而非返回它们一样,...
  • 当您对修改的行数或最后一个插入的行ID不感兴趣时​​,
  • INSERTUPDATEDELETE
  • 依赖于执行声明的任何其他内容。

答案 1 :(得分:10)

如果你想在数据库中执行一些事情而不考虑它的输出(例如创建/改变表),那么使用 execSQL ,但是如果你期望某些结果反对你的查询(例如选择记录) )然后使用 rawQuery