2011-11-20 74 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中不可用。 –