#ls
lib
#mkdir databases
#ls
databases
lib
默認創建的"databases"僅供 "root"權限訪問,而在Android平臺中,我們啓動的每個“Activity”都是使用不同的“user”權限,所以我們需要用“chmod”命令來改變默認權限:
#chmod 777 databases
#ls -l
drwxrwxrwxroot2010-04-21 20:33 databases
drwxr-xr-xsysem2010-04-21 20:31 lib
有了存放數據庫的文件夾,可以開始創建數據庫。使用“sqlite3”來創建
#cd databases
#sqlite3 note.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite>
現在這個數據庫還是空的,裏面沒有存儲任何數據或記錄。當執行“sqlite3”命令後,命令提示符從#換成“sqlite>”,表示進入“SQLite”互動模式,可以做添加,刪除,修改,查詢等動作。
我們可以輸入一下命令來創建table。
sqlite> CREATE TABLE dictionary (word VARCHAR(30), pronounce VARCHAR(50), comment NVARCHAR(100));
注意,SQLite命令和java代碼一樣,大小寫代表不同符號,而且以分號結尾。sqlite3與許多SQL數據庫軟件
不同的是,它不在乎字段屬於哪一種資料型態:sqlite3的字段可以儲存任何東西:文
字、數字、大量文字(blub),它會在適時自動轉換。
輸入以上命令後,可以用一下命令來驗證是否創建成功,這命令作用是列出目錄下所有SQLite的數據庫列表:
sqlite>.databases
seqnamefile
-------------------------------------------------------------------------------------
0 main /data/data/com.wenjie.android.dictionary/databases/dictionary.db
“.table” 用來列出所有tables。
sqlite>.table
dictionary
".schema"用來現實出創建數據表的命令。
sqlite>.schema
CREATE TABLE dictionary (word VARCHAR(30), pronounce VARCHAR(50), comment NVARCHAR(100));
若有多個數據表,也可以在".schema"後面輸入特定的數據表當參數,如".schema dictionary",這樣只會打印出對應的數據表創建命令。
1. 進入到F:\Android\android-sdk_r05-windows\android-sdk-windows\tools 以後,
2. 應該使用adb push命令將硬盤上的文件複製到android AVD 的某個應用程序的databases文件夾下,執行命令如下:
adb push F:\en.txt data/data/com.wenjie.android.dictionary/databases
=>758 KB/s(813441 bytes in 1.046s)
3. 在AVD是運行的狀態下,按着以下步驟:
(1) 運行輸入 adb shell(2) 進入命令界面後 輸入 ls 指令 會列出文件的目錄 (3) cd 進入你想要的目錄裏 (4) 一層一層進去後會發現 databases目錄 你的數據文件就在這個目錄下放着 (5) sqlite3 test(test就是你創建的數據庫的名稱 注意:不要加.db 後綴)
(6) 現在你就進入你創建的test數據庫了使用.tables 就可以查看所有的表了;
***************************************************************
adb shell
#cd /data/data/<package_name>/databases
# find data -name "*.db" -print data/data/com.google.android.providers.contacts/databases/contacts.db data/data/com.google.android.providers.googleapps/databases/accounts.db data/data/com.google.android.providers.im/databases/im.db data/data/com.google.android.providers.media/databases/media.db data/data/com.google.android.providers.telephony/databases/mms.db data/data/com.google.android.providers.telephony/databases/sms.db data/data/com.google.android.providers.telephony/databases/telephony.db data/data/com.google.android.providers.settings/databases/settings.db data/data/com.google.android.maps/databases/maps.db data/data/com.wenjie.android.dictionary/dictionary.db
or
#ls
com.wenjie.android.dictionary
com.android.camera
:
:
com.android.browser
#cd com.wenjie.android.dictionary
cd com.wenjie.android.dictionary
#ls
databases (** 只有databases這個文件夾)
#cd databases
cd databases
#ls
dictionary.db (**只有dictionary.db文件)
#sqlite3 dictionary.db
SQLite version 3.5.0 Enter ".help" for instructions sqlite> .separator "|"
sqlite> .import en.txt dictionary
(**en.txt成功導入到dictionary.db)
其他sqlite的特別用法
1. 建立索引
如果資料表有相當多的資料,我們便會建立索引來加快速度。好比說:
create index film_title_index on film(title);
意思是針對film資料表的name字段,建立一個名叫film_name_index的索引。這個指
令的語法爲
create index index_name on table_name(field_to_be_indexed);
一旦建立了索引,sqlite3會在針對該字段作查詢時,自動使用該索引。這一切的操作
都是在幕後自動發生的,無須使用者特別指令。
2. sqlite可以在shell底下直接執行命令:
sqlite3 film.db "select * from film;"
輸出 HTML 表格:
sqlite3 -html film.db "select * from film;"
將數據庫「倒出來」:
sqlite3 film.db ".dump" > output.sql
利用輸出的資料,建立一個一模一樣的數據庫(加上以上指令,就是標準的SQL數據庫
備份了):
sqlite3 film.db < output.sql
在大量插入資料時,你可能會需要先打這個指令:
begin;
插入完資料後要記得打這個指令,資料纔會寫進數據庫中:
commit;
利用空餘的時間終於搞成了電子詞典的部分功能。但是遇到以下問題:(1).當要利用插入功能插入新單詞是爆出如下問題:
android.database.sqlite.SQLiteException: error code 8: attempt to write a readonly database
原因是沒有給SQLite數據庫文件所在文件夾對應用戶的讀寫權限。
#ls -l dictionary.db
-rw-r--r--rootroot5120 2010-05-09 14:32 dictionary.db
然後把權限改了就沒有問題了。
#chmod 777 dictionary.db
chomod 777 dictionary.db
#ls -l dictionary.db
-rwxrwxrwxrootroot5120 2010-05-09 14:32 dictionary.db