首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在android中记录SQL查询

在android中记录SQL查询
EN

Stack Overflow用户
提问于 2011-05-11 23:15:56
回答 7查看 31.4K关注 0票数 55

我使用query函数为我的表构建SQL查询。有没有办法查看正在运行的实际查询?例如,将它记录在某个地方?

到目前为止,我能做的最好的事情就是使用断点查看一下游标的成员mQuery。不过,我喜欢自动输出查询。这个成员当然不是公共的,也没有getter。

仅供记录,这里是可接受答案的一个实现。

代码语言:javascript
复制
/**
 * Implement the cursor factory in order to log the queries before returning 
 * the cursor
 * 
 * @author Vincent @ MarvinLabs
 */
public class SQLiteCursorFactory implements CursorFactory {

    private boolean debugQueries = false;

    public SQLiteCursorFactory() {
        this.debugQueries = false;
    }

    public SQLiteCursorFactory(boolean debugQueries) {
        this.debugQueries = debugQueries;
    }

    @Override
    public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, 
                            String editTable, SQLiteQuery query) {
        if (debugQueries) {
            Log.d("SQL", query.toString());
        }
        return new SQLiteCursor(db, masterQuery, editTable, query);
    }
}
EN

回答 7

Stack Overflow用户

发布于 2013-10-03 15:04:52

代码语言:javascript
复制
adb shell setprop log.tag.SQLiteStatements VERBOSE

设置此属性后,不要忘记重新启动您的应用程序。

还可以启用执行时间的日志记录。更多详细信息请点击此处:http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/database/sqlite/SQLiteDebug.java

票数 38
EN

Stack Overflow用户

发布于 2013-01-13 18:06:51

使用SQLiteQueryBuilder是极其简单的。buildQuery()返回一个原始的sql字符串,然后可以记录该字符串:

代码语言:javascript
复制
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(ExampleTable.TABLE_NAME);
String sql = qb.buildQuery(projection, selection, null, null, sortOrder, null);
Log.d("Example", sql);
票数 5
EN

Stack Overflow用户

发布于 2011-05-18 17:55:33

到目前为止,我能做的最好的事情就是使用断点查看一下游标的成员mQuery。这个成员当然不是公共的,也没有getter,因此无法输出它。有更好的建议吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5966584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档