androidsqlite導入
SQLite 一個非常流行的嵌入式資料庫,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLite.
Android 開發中使用 SQLite 資料庫
Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。下面會詳細講解如果創建資料庫,添加數據和查詢資料庫。
創建資料庫
Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。SQLiteOpenHelper 的子類,至少需要實現三個方法:
構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
『貳』 android sqlite 的導入( import)問題
注意資料庫的每一列的欄位都是一樣的,這給我們一個很好的方法,可以用for循環的方法將沒一列數據讀出,並通過socket寫入到流中,另一端則通過循環讀流的方式,讀一列就把數據存入SQLite資料庫中。
另外有一個更為簡潔的方法,如果你會Http、xml協議的話,可以將資料庫中的數據以xml文件的格式發送到另一端,另一端就只用通過解析xml文件,並將數據保存到本地SQLite資料庫中。
『叄』 如何把批量數據導入到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
drwxrwxrwx root 2010-04-21 20:33 databases
drwxr-xr-x sysem 2010-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
seq name file
----- -------- ------------------------------------------------------------------------
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",這樣只會列印出對應的數據表創建命令。
Apr 18, 2010
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 ".mp" > output.sql
利用輸出的資料,建立一個一模一樣的資料庫(加上以上指令,就是標準的SQL資料庫
備份了):
sqlite3 film.db < output.sql
在大量插入資料時,你可能會需要先打這個指令:
begin;
插入完資料後要記得打這個指令,資料才會寫進資料庫中:
commit;
Jun 26, 2010
利用空餘的時間終於搞成了電子詞典的部分功能。但是遇到以下問題:
(1).當要利用插入功能插入新單詞是爆出如下問題:
android.database.sqlite.SQLiteException: error code 8: attempt to write a readonly database
原因是沒有給SQLite資料庫文件所在文件夾對應用戶的讀寫許可權。
#ls -l dictionary.db
-rw-r--r-- root root 5120 2010-05-09 14:32 dictionary.db
然後把許可權改了就沒有問題了。
#chmod 777 dictionary.db
chomod 777 dictionary.db
#ls -l dictionary.db
-rwxrwxrwx root root 5120 2010-05-09 14:32 dictionary.db
『肆』 android怎麼引用一個外部引入的sqlite文件
採用將項目中的sqlite文件拷到android內存卡上的固定位置,先判斷位置上是否存在sqlite文件,不存在則復制文件。sqlite可放在res的raw目錄下,亦可放在assets下,放在assets下,可新建其他層次目錄,本例選擇assets
1.首先,添加sdcard許可權在AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在activity中有如下代碼
2.Java代碼
button2.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
try{
StringDATABASE_PATH=android.os.Environment.getExternalStorageDirectory().getAbsolutePath()
+"/testdb";//將要存放於的文件夾
StringDATABASE_FILENAME="testDatabase.db";//文件名
StringdatabaseFilename=DATABASE_PATH+"/"+DATABASE_FILENAME;
Filedir=newFile(DATABASE_PATH);
//如果/sdcard/testdb目錄中存在,創建這個目錄
if(!dir.exists())
dir.mkdir();
//如果在/sdcard/testdb目錄中不存在
//test.db文件,則從assetdb目錄中復制這個文件到
//SD卡的目錄(/sdcard/testdb)
if(!(newFile(databaseFilename)).exists()){
//獲得封裝testDatabase.db文件的InputStream對象
AssetManagerasset=getAssets();
InputStreamis=asset.open("db/testDatabase.db");
FileOutputStreamfos=newFileOutputStream(databaseFilename);
byte[]buffer=newbyte[8192];
intcount=0;
//開始復制testDatabase.db文件
while((count=is.read(buffer))>0){
fos.write(buffer,0,count);
}
fos.close();
is.close();
asset.close();
}
SQLiteDatabasemSQLiteDatabase=openOrCreateDatabase(databaseFilename,Activity.MODE_PRIVATE,null);//有則打開,沒有創建
Cursorcur=mSQLiteDatabase.rawQuery("select*fromtable1",null);
if(cur!=null){
if(cur.moveToFirst()){
do{
intidColumnIndex=cur.getColumnIndex("id");
intnumColumnIndex=cur.getColumnIndex("num");
intdataColumnIndex=cur.getColumnIndex("data");
intid=cur.getInt(idColumnIndex);
intnum=cur.getInt(numColumnIndex);
Stringdata=cur.getString(dataColumnIndex);
System.out.println("id:"+id+";num:"+num+";data:"+data);
}while(cur.moveToNext());
cur.close();
}
}
mSQLiteDatabase.close();//關閉資料庫連接
}catch(Exceptione){
e.printStackTrace();
}
//deleteDatabase("testDatabase.db");//刪除資料庫
}
});
『伍』 android開發怎麼把sqlite資料庫導入真機
1、運行輸入 adb shell (前提是模擬器正在運行)。
2、進入命令界面後 輸入 ls 指令 會列出文件的目錄。
3、cd 進入你想要的目錄里。
4、一層一層進去後會發現 databases目錄 你的數據文件就在這個目錄下放著。
5、sqlite3 test (test就是你創建的資料庫的名稱 注意:不要加.db 後綴)。
6、現在你就進入你創建的test資料庫了使用 .tables 就可以查看所有的表了。
『陸』 怎麼將sqlite導入到android項目中 最好是有圖片說明。
Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以直接使用 SQLite 資料庫,不需要導入操作,Android會自動創建。
Android 提供了 SQLiteOpenHelper 幫助用戶創建一個資料庫,只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
SQLiteOpenHelper 的子類,至少需要實現三個方法:
1. 構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2.onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3. onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
『柒』 android導入外部sqlite資料庫 外部資料庫後來有更新怎麼同步到android上
1、 自己寫一個方法,點擊或者啟動的時候,採用JDBC一條條的取數據來同步。如果有時間戳的列,那麼你很好同步。 2. 我們採用的是,Local和伺服器都採用SQLLite。需要同步的時候,直接把伺服器的DB文件給拷貝下來,放到Local就可以了。至於提交到
『捌』 怎麼把sqlite文件放到android里
可以將你的資料庫.db文件復制到Android工程的res raw文件夾中
在Android中不能直接打開res raw目錄中的資料庫文件,而需要在程序第一次啟動時將該文件復制到手機內存或SD卡的某個目錄中,然後再打開該資料庫文件
復制的基本方法是使用getResources().openRawResource方法獲得res raw目錄中資源的InputStream對象,然後將該InputStream對象中的數據寫入其他的目錄相應的文件中
最後可以使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite資料庫文件
『玖』 android怎麼將.sql格式的文件導入到Sqlite去
1、xxxx.sql文件為可sql語句,可以用記事本打開,然後將內容到sqlite中執行
2、如果是用這個工具可以選擇sql-》load sql script之間導入sql文件
『拾』 android sqlite怎麼批量插入數據
解決方法:
添加事務處理,把5000條插入作為一個事務
dataBase.beginTransaction(); //手動設置開始事務
//數據插入操作循環
dataBase.setTransactionSuccessful(); //設置事務處理成功,不設置會自動回滾不提交
dataBase.endTransaction(); //處理完成
將資料庫「倒出來」:
sqlite3 film.db ".mp" > output.sql
利用輸出的資料,建立一個一模一樣的資料庫(加上以上指令,就是標準的SQL資料庫
備份了):
sqlite3 film.db < output.sql
在大量插入資料時,你可能會需要先打這個指令:
begin;
插入完資料後要記得打這個指令,資料才會寫進資料庫中:
commit;