我需要记录查询过程,不仅限于插入/更新/删除操作,还包括选择和其他查询操作,这些操作是由使用SQLite的多个应用程序执行的。在这种情况下,将日志记录引入到应用程序中实际上并不可行。那么我该如何在SQLite本身中启用查询日志记录?
可以看一下sqlite的Trace API。你需要自己实现回调函数。
void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
sqlite3_trace()
注册的回调函数会在通过sqlite3_step()
执行 SQL 语句时被调用。回调函数返回 SQL 语句文本的 UTF-8 渲染形式,当语句开始执行时首先调用。每个触发的子程序进入时都会出现其他回调。