2011-11-20 89 views
3

我想查看SQLiteDatabase生成的SQL语句,以了解为什么有些问题。有没有办法让SQLiteDatabase日志logcat?使用SQLiteDatabase记录SQL语句

谢谢, Itay。

编辑:这是不一样的Logging SQL queries in android,因为我试图记录插入和更新语句 - 我没有一个游标。

+0

似乎你是一样的要求http://stackoverflow.com/questions/5966584/logging-sql-queries-in-android –

+0

不,不完全是,我没有游标,我想要记录插入和更新语句(尽管记录查询也是一个好主意......)。我会更新以确保。 – zmbq

回答

2

你必须自己使用跟踪API来实现它,这样你就可以实现的SQLite Trace回调:

由sqlite3_trace()登记在 不同的时间被调用时的SQL语句是回调函数由sqlite3_step()运行。 在语句首次开始执行时,会调用sqlite3_trace()回调函数,并执行 SQL语句文本的UTF-8渲染。其他 sqlite3_trace()回调可能发生,因为每个触发的子程序都是 输入的。触发器的回调包含一个UTF-8 SQL注释, 标识触发器。

sqlite3_profile()注册的回调函数被调用为 每个SQL语句结束。配置文件回调包含 原始语句文本以及该语句花费多长时间运行的挂钟时间估计值。配置文件回调时间的单位为 纳秒,但是当前的实现仅具有 毫秒分辨率,因此时间 中的六个最低有效位数没有意义。未来版本的SQLite可能会在探查器回调中提供更大的 分辨率。 sqlite3_profile()函数是 认为是实验性的,并且在将来版本的 SQLite中可能会更改。

+0

啊,现在我需要找出当我不能写C函数时如何实现这些功能。有任何想法吗?初步的谷歌搜索不是很有帮助。 – zmbq

+0

除非您使用NDK,否则SQLite C API在Android中不可用。 –