如何把批量數據導入到android 的 sqlite 數據庫(轉)

SQLite 數據庫需要放在目錄中的databases folder,我們可以使用“adb shell” 的 “mkdir”來創建這個文件夾。

#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章