androidsqlite導入數據
Ⅰ 怎麼將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 的導入( import)問題
注意資料庫的每一列的欄位都是一樣的,這給我們一個很好的方法,可以用for循環的方法將沒一列數據讀出,並通過socket寫入到流中,另一端則通過循環讀流的方式,讀一列就把數據存入SQLite資料庫中。
另外有一個更為簡潔的方法,如果你會Http、xml協議的話,可以將資料庫中的數據以xml文件的格式發送到另一端,另一端就只用通過解析xml文件,並將數據保存到本地SQLite資料庫中。
Ⅲ 如何把批量數據導入到android 的 sqlite 資料庫
1、使用db.execSQL(sql)
這里是把要插入的數據拼接成可執行的sql語句,然後調用db.execSQL(sql)方法執行插入。
public void inertOrUpdateDateBatch(List<String> sqls) {
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
try {
for (String sql : sqls) {
db.execSQL(sql);
}
// 設置事務標志為成功,當結束事務時就會提交事務
db.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 結束事務
db.endTransaction();
db.close();
}
}
2、使用db.insert("table_name", null, contentValues)
這里是把要插入的數據封裝到ContentValues類中,然後調用db.insert()方法執行插入。
db.beginTransaction(); // 手動設置開始事務
for (ContentValues v : list) {
db.insert("bus_line_station", null, v);
}
db.setTransactionSuccessful(); // 設置事務處理成功,不設置會自動回滾不提交
db.endTransaction(); // 處理完成
db.close()
3、使用InsertHelper類
這個類在API 17中已經被廢棄了
InsertHelper ih = new InsertHelper(db, "bus_line_station");
db.beginTransaction();
final int directColumnIndex = ih.getColumnIndex("direct");
final int lineNameColumnIndex = ih.getColumnIndex("line_name");
final int snoColumnIndex = ih.getColumnIndex("sno");
final int stationNameColumnIndex = ih.getColumnIndex("station_name");
try {
for (Station s : busLines) {
ih.prepareForInsert();
ih.bind(directColumnIndex, s.direct);
ih.bind(lineNameColumnIndex, s.lineName);
ih.bind(snoColumnIndex, s.sno);
ih.bind(stationNameColumnIndex, s.stationName);
ih.execute();
}
db.setTransactionSuccessful();
} finally {
ih.close();
db.endTransaction();
db.close();
}
4、使用SQLiteStatement
查看InsertHelper時,官方文檔提示改類已經廢棄,請使用SQLiteStatement
String sql = "insert into bus_line_station(direct,line_name,sno,station_name) values(?,?,?,?)";
SQLiteStatement stat = db.compileStatement(sql);
db.beginTransaction();
for (Station line : busLines) {
stat.bindLong(1, line.direct);
stat.bindString(2, line.lineName);
stat.bindLong(3, line.sno);
stat.bindString(4, line.stationName);
stat.executeInsert();
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
Ⅳ android 向sqlite資料庫中插入空間數據怎麼寫
lic void run() {
String aa = String.format(sql2);
try {
Class.forName("jsqlite.JDBCDriver").newInstance();
jsqlite.Database db = new jsqlite.Database();
db.open(DBpath,jsqlite.Constants.SQLITE_OPEN_READONLY);
db.exec(aa, new Callback() {
@Override
public void columns(String[] strings) {
Ⅳ android sqlite 插入數據失敗的問題
先進調試頁面,
打斷點,單步運行,查看錯誤
3.在debug一欄中查看錯誤信息
這里的錯誤是資料庫表單的項目和實際插入的項目數量不符,原因是這個代碼是修改過的,原來的資料庫表項有52,改成4之後,安卓模擬器里邊的資料庫並沒有刪除,保留原來的4項表單。
解決方法:找到資料庫,資料庫在這里找,這位大哥的博客里有,刪除資料庫。
4.如果不是這個問題,復制錯誤信息,求助網路
Ⅵ android怎麼將.sql格式的文件導入到Sqlite去
有人說用sqlite3
sqlite3
mydb.db
>.read
dd.sql
mydb.db
就是我的android的資料庫,數據表結構就是([id],[name])這樣的
dd.sql
就是外部資料庫
dd.sql裡面的打開就是
Insert
Into
[mydb.db]
([id],[name])
Values("001","David");
請問這樣可以導入么..或者有什麼別的方法可以導入?
-----參考解決方法-------
把mydb.db用DDMS導出,用navicat打開,執行sql腳...
有人說用sqlite3
sqlite3
mydb.db
>.read
dd.sql
mydb.db
就是我的android的資料庫,數據表結構就是([id],[name])這樣的
dd.sql
就是外部資料庫
dd.sql裡面的打開就是
Insert
Into
[mydb.db]
([id],[name])
Values("001","David");
請問這樣可以導入么..或者有什麼別的方法可以導入?
-----參考解決方法-------
把mydb.db用DDMS導出,用navicat打開,執行sql腳本,把mydb.db用DDMS導入
全部
Ⅶ 如何把批量數據導入到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怎麼批量插入數據
解決方法:
添加事務處理,把5000條插入作為一個事務
dataBase.beginTransaction(); //手動設置開始事務
//數據插入操作循環
dataBase.setTransactionSuccessful(); //設置事務處理成功,不設置會自動回滾不提交
dataBase.endTransaction(); //處理完成
將資料庫「倒出來」:
sqlite3 film.db ".mp" > output.sql
利用輸出的資料,建立一個一模一樣的資料庫(加上以上指令,就是標準的SQL資料庫
備份了):
sqlite3 film.db < output.sql
在大量插入資料時,你可能會需要先打這個指令:
begin;
插入完資料後要記得打這個指令,資料才會寫進資料庫中:
commit;
Ⅸ android開發怎麼把sqlite資料庫導入真機
1、運行輸入 adb shell (前提是模擬器正在運行)。
2、進入命令界面後 輸入 ls 指令 會列出文件的目錄。
3、cd 進入你想要的目錄里。
4、一層一層進去後會發現 databases目錄 你的數據文件就在這個目錄下放著。
5、sqlite3 test (test就是你創建的資料庫的名稱 注意:不要加.db 後綴)。
6、現在你就進入你創建的test資料庫了使用 .tables 就可以查看所有的表了。