我使用query
函数为我的表构建SQL查询。有没有办法查看正在运行的实际查询?例如,将它记录在某个地方?
到目前为止,我能做的最好的事情就是使用断点查看一下游标的成员mQuery。不过,我喜欢自动输出查询。这个成员当然不是公共的,也没有getter。
仅供记录,这里是可接受答案的一个实现。
/**
* 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);
}
}
发布于 2013-10-03 15:04:52
adb shell setprop log.tag.SQLiteStatements VERBOSE
设置此属性后,不要忘记重新启动您的应用程序。
还可以启用执行时间的日志记录。更多详细信息请点击此处:http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/database/sqlite/SQLiteDebug.java
发布于 2013-01-13 18:06:51
使用SQLiteQueryBuilder
是极其简单的。buildQuery()
返回一个原始的sql字符串,然后可以记录该字符串:
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(ExampleTable.TABLE_NAME);
String sql = qb.buildQuery(projection, selection, null, null, sortOrder, null);
Log.d("Example", sql);
发布于 2011-05-18 17:55:33
到目前为止,我能做的最好的事情就是使用断点查看一下游标的成员mQuery。这个成员当然不是公共的,也没有getter,因此无法输出它。有更好的建议吗?
https://stackoverflow.com/questions/5966584
复制相似问题