我想註冊的回調方法使用SQLite觸發 例如Java方法,調用從SQLite觸發器(機器人)
public void printLog(){
Log.i("TAG","1 row added");
}
這個方法調用後插入任何行源碼。
可能嗎?
如何做到這一點?
我想註冊的回調方法使用SQLite觸發 例如Java方法,調用從SQLite觸發器(機器人)
public void printLog(){
Log.i("TAG","1 row added");
}
這個方法調用後插入任何行源碼。
可能嗎?
如何做到這一點?
您可以設置內容觀察者這個鏈接將幫助接收回調更改內容http://developer.android.com/reference/android/database/ContentObserver.html
的SQLite提供Data Change Notification Callbacks。我不認爲Android直接暴露他們,但它確實有CursorAdapter,它提供了一些更改通知。
您也可以使用getContentResolver().registerContentObserver,但不幸的是,它不會告訴您進行了哪種更改,可能是刪除,插入或更新。
如果您控制與數據庫接口的ContentProvider,那麼您可以觸發一個意圖或使用getContentResolver().notifyChange發送一個特殊的Uri通知來標識表和動作。你可以通知的一個例子是:content:// my-authority/change/table-name/insert
但是即使這樣,你也不知道確切的哪些行受到改變的影響。
似乎觸發器寫入更改日誌表可以保證您聽到所有更改,而不管它們來自何處,並且您可以知道發生的確切ID和操作。不幸的是,它意味着更慢的插入/更新/刪除,這意味着您可能需要某種服務來處理和刪除更改。
我很想聽聽這些是否有更好的解決方案!
爲什麼不把這個調用放在代碼下面,無論你插入一條記錄?爲什麼要通過'trigger'調用'call'? – SudoRahul 2013-03-07 10:29:07
這只是一個例子。我想更改sqlite dbs後通知。 – user2143779 2013-03-07 10:30:30
爲什麼你不檢查數據庫插入API的返回值?它會返回新插入行的行ID,如果發生錯誤,則返回-1。 – 2013-03-07 10:34:43