Vin*_*rat 53 sqlite logging android
我正在使用这些query
函数来为我的表构建SQL查询.有没有办法看到运行的实际查询?比如把它记在某个地方?
到目前为止,我能做的最好的事情是使用断点查看游标的成员mQuery.我喜欢自动输出查询.该会员当然不公开,也没有吸气剂.
仅供记录,这是接受答案的实现.
/**
* 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);
}
}
Run Code Online (Sandbox Code Playgroud)
Gra*_*and 36
您可以将自己的应用程序应用于SQLiteDatabase.CursorFactory
数据库.(请参阅openDatabase参数.)这将允许您创建自己的子类Cursor
,从而使查询保持在易于访问的字段中.
编辑:事实上,你甚至可能不必子类Cursor
.只需让工厂的newCursor()
方法返回标准SQLiteCursor
,但在执行此操作之前记录查询.
Tem*_*ema 33
adb shell setprop log.tag.SQLiteStatements VERBOSE
Run Code Online (Sandbox Code Playgroud)
设置此属性后,请不要忘记重新启动应用.
还可以启用执行时间的记录.有关详细信息,请访问:http: //androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/database/sqlite/SQLiteDebug.java
kon*_*mik 19
adb shell setprop log.tag.SQLiteLog V adb shell setprop log.tag.SQLiteStatements V adb shell stop adb shell start
使用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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27722 次 |
最近记录: |