2010-06-09 53 views
0

我有一個SQLite數據庫,並datbase內的幾個表。我正在爲數據庫中的每個表開發一個DBAdapter。 (參考Reto Meier的專業Android 2應用程序開發,程序清單7.1)。的Android和SQLite使用SQLiteOpenHelper

我現在用的是亞行外殼採用命令行的數據庫對接,並且認爲這是我所期望的數據庫被填充。偶爾,我想放下一張桌子,以便我可以確保從頭開始正確地構建它。

的問題是,SQLiteOpenHelper只檢查是否存在數據庫。有沒有一個典型的解決方案來編寫一個幫助程序,以查看該表是否存在?基本上,一旦我刪除了一張表,助手就會檢查數據庫是否存在,並假設一切正常。

另外,在僅高於參考使用的CREATE_DATABASE串創建一個表。我應該考慮使用DBAdapter作爲所有我的表的適配器嗎?這對我來說似乎並不乾淨。

Reference Material

回答

1

是否有寫 一個幫手也看到桌 存在的典型解決方案?

SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='...' ORDER BY name; 

(在表的名稱代替...

如果返回1,你的表存在。如果返回0,表格不存在。

然而,助手不會幫你。出於測試目的,我建議擺脫整個數據庫,因爲在生產中,您不會即時創建單個表。

+0

所以,我真的覺得愚蠢..但什麼是shell命令擺脫數據庫? – tunneling 2010-06-09 16:51:31

+0

'rm/data/data/your.package.here/databases/your.db',用適當的值代替'your.package.here'和'your.db'。或者,使用DDMS中的文件管理器(獨立或Eclipse透視圖)並以此方式對其進行覈對。 – CommonsWare 2010-06-09 17:28:20

+3

'rm'只能在模擬器和根源手機上使用。在正常的手機,你需要做一個'亞行uninstall'這將刪除'/數據/數據/ your.package.here'目錄。 – Martin 2011-05-28 08:02:33

0

偶爾,我想刪除表 ,這樣我可以確保它正在建造 得當,從頭開始。

我有一個儀器測試,它刪除並重新創建所有表。多一點工作,但一旦做了更多的幫助。

是否有寫 一個幫手也看到桌 存在的典型解決方案?

除了CommonsWare的建議,還有一個使用shell命令獲取這些信息的選項。

adb -e shell sqlite3 -batch ${DB_FILE} .table 
adb -e shell sqlite3 -batch ${DB_FILE} .schema 
相關問題