Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android sqlite数据库中rawquery与execSQL的区别_Android_Sqlite - Fatal编程技术网

android sqlite数据库中rawquery与execSQL的区别

android sqlite数据库中rawquery与execSQL的区别,android,sqlite,Android,Sqlite,使用rawquery和execSQL的确切区别是什么?? 在android活动中编写查询时,何时使用rawquery以及何时使用execSQL?来自API文档: 执行一条SQL语句,该语句不是SELECT或任何其他返回数据的SQL语句 执行一条不是SELECT/INSERT/UPDATE/DELETE的SQL语句 文档不一致,但它们的行为相同。后者的记录更为深入 运行提供的SQL并返回结果集上的游标 用于rawQuery的有: 您想使用SELECT语句查询数据库。 =>rawQue

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

来自API文档:


执行一条SQL语句,该语句不是SELECT或任何其他返回数据的SQL语句

执行一条不是SELECT/INSERT/UPDATE/DELETE的SQL语句

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


运行提供的SQL并返回结果集上的游标


用于
rawQuery
的有:

  • 您想使用
    SELECT
    语句查询数据库。
    =>
    rawQuery(“选择…”
    返回
    光标中的一组行和列。
    
    • 更有效的方法是使用或在只有1x1查询结果的情况下使用,如从表中选择计数(*)(表中也有自己的专用方法:)-这跳过了
      光标对象的创建,简化了代码,因为也没有要关闭的对象、moveToNext等
  • 特殊情况,如
    PRAGMA table_info
    ,以行形式返回数据(请参阅)
  • 注意:不要使用
    rawQuery
    进行
    INSERT
    UPDATE
    DELETE
    或任何其他修改数据库的操作。您将遇到。原因是查询可以延迟读取结果,直到需要(=访问光标),这意味着SQLite延迟
execSQL
的用途包括:

  • 您有数据库的“说明”。例如
    CREATE TABLE
    (或任何其他
    CREATE
    语句,例如
    CREATE INDEX
    ),
    DROP
    PRAGMA
    设置属性而不是返回属性
  • 插入
    更新
    删除
    ,如果您对修改的行数或上次插入的行id不感兴趣。
    • 当您需要这些方法时,可以使用
      update()
      insert()
      delete()
      方法,或者使用第二条语句来读取这些方法:
      DatabaseUtils.longForQuery
      选择最后一次插入\u rowid()
      选择更改()
      。两者都只返回1个整数值。(请参阅和)
  • 依赖于执行语句的任何其他内容

如果您希望在数据库中执行某些内容而不考虑其输出(例如创建/更改表),则使用execSQL,但如果您希望查询返回某些结果(例如选择记录)然后使用rawQuery

弄清楚了。execSQL不返回任何东西,用于创建、更新等。rawQuery返回游标等。