文章參照:www.sqlite.org/sqlite.htmlsqlite3可以讓我們手動的對SQLite資料庫進行管理。一共有2個sqlite3,一個在電腦上,它位於android-sdk-windows\tools\sqlite3.exe,用於電腦上SQLite資料庫進行管理;還有一個位於android系統上(手機上),它用於位於Android系統上的SQLite資料庫進行管理,對於後者你需要通過adb
shell進入shell。有時我們不想直接在android系統上對SQLite資料庫進行操作,這時可以把它拷貝到電腦上進行操作。但是需要注意前者是window系統,後者是Linux系統,他們表示路徑的方式不一樣。 在sqlite3命令後可跟一個參數指定要開啟或建立的資料庫檔案。如果指定的資料庫檔案還不存在,就會建立一個資料庫,且以該參數作為檔案名稱。對於android系統上的sqlite3,必須通過其shell來運行,如果建立資料庫的話,需要root許可權,可以在shell中鍵入"su"來獲得root許可權。如果是android系統的sqlite3程式(通過shell運行),你可以Ctrl鍵+D ,然後斷行符號退出該程式回到shell,也可以Ctrl鍵+C直接退出Shell,如果是電腦上的sqlite3,可以Ctrl鍵+C直接退出sqlite3程式。下面就是一個建立包含一個名叫"tbl1"的表的名叫"ex1"的SQLite資料庫的樣本。樣本1:$ sqlite3 ex1SQLite version 3.3.10Enter ".help" for instructionssqlite> create table tbl1(one varchar(10), two smallint);sqlite> insert into tbl1 values('hello!',10);sqlite> insert into tbl1 values('goodbye', 20);sqlite> select * from tbl1;hello!|10goodbye|20sqlite>sqlite3支援兩種命令,一種是SQL命令,一種是非SQL命令,非SQL命令以"."作為首碼,比如".tables"命令。可以通過".help"命令來查看它所有的非SQL命令.所有不以"."為首碼的語句,都將做SQL進行解釋,當時對於SQL語句你需要在末尾加上分號";"以表示SQL語句輸入完成,這時你輸入的命令才開始按照SQL語言進行執行。比如,樣本2:sqlite> CREATE TABLE tbl2 ( ...> f1 varchar(30) primary key, ...> f2 text, ...> f3 real ...> );sqlite>關於資料庫的schema是存放在一個叫sqlite_master的表中,你雖然不能對它進行DROP TABLE, UPDATE, INSERT or DELETE操作,但是可以像普通的表一樣對它進行查詢。比如,樣本3:sqlite3 /data/data/com.android.providers.settings/databases/settings.dbSQLite version 3.6.22Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite> .tables.tablesandroid_metadata bookmarks systembluetooth_devices securesqlite> select * from sqlite_master;select * from sqlite_master;table|android_metadata|android_metadata|3|CREATE TABLE android_metadata (localeTEXT)table|system|system|4|CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT)index|sqlite_autoindex_system_1|system|5|table|sqlite_sequence|sqlite_sequence|6|CREATE TABLE sqlite_sequence(name,seq)index|systemIndex1|system|7|CREATE INDEX systemIndex1 ON system (name)table|secure|secure|8|CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT)index|sqlite_autoindex_secure_1|secure|9|index|secureIndex1|secure|10|CREATE INDEX secureIndex1 ON secure (name)table|bluetooth_devices|bluetooth_devices|11|CREATE TABLE bluetooth_devices (_id INTEGER PRIMARY KEY,name TEXT,addr TEXT,channel INTEGER,type INTEGER)table|bookmarks|bookmarks|12|CREATE TABLE bookmarks (_id INTEGER PRIMARY KEY,title TEXT,folder TEXT,intent TEXT,shortcut INTEGER,ordering INTEGER)index|bookmarksIndex1|bookmarks|13|CREATE INDEX bookmarksIndex1 ON bookmarks (folder)index|bookmarksIndex2|bookmarks|14|CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut)sqlite>關於TEMPORARY tables的schema並沒有儲存在 "sqlite_master" 表中,因為TEMPORARY表只對建立它的applications可見. 關於TEMPORARY tables的schema儲存在另外一個名叫"sqlite_temp_master"的表中. The "sqlite_temp_master" table is temporary itself.