【问题标题】:difference between rawquery and execSQL in android sqlite databaseandroid sqlite数据库中rawquery和execSQL的区别
【发布时间】:2012-03-12 12:30:01
【问题描述】:

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

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    来自 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)、DROPPRAGMAs 设置属性而不是返回它们,...
    • INSERTUPDATEDELETE 当您对修改的行数或最后插入的行 ID 不感兴趣时​​。
    • 任何其他依赖于执行语句的事情。

    【讨论】:

    • 明白了.. execSQL 不返回任何内容并用于创建、更新等.. rawQuery 返回游标等。
    【解决方案2】:

    如果您想在数据库中执行某些操作而不考虑其输出(例如创建/更改表),那么请使用 execSQL,但如果您希望针对您的查询返回一些结果(例如选择记录) 然后使用 rawQuery

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多