A. 在android應用程序中使用SQLite資料庫以及怎麼用
其主要思路是:
1.
把資料庫分解成幾個asset文件。
2.
當需要打開資料庫時,如果資料庫不存在,就把那幾個asset文件重新合並成一個資料庫文件。
3.
如果資料庫的版本改變了,就在onUpgrade()方法中把資料庫文件刪除掉。
下面是代碼:
//資料庫的預設路徑
private
static
finalString
DB_PATH
=
"/data/data/com.mypackage.myapp/databases/";
private
static
finalString
DB_NAME
=
"mydb.db";
private
static
finalint
DB_VERSION
=
2;
private
static
finalString
DB_SPLIT_NAME
=
"mydb.db.00";
private
static
finalint
DB_SPLIT_COUNT
=
3;
private
SQLiteDatabasem_database;
private
final
Contextm_context;
/**
*
Constructor
*保存傳進來的context參數以用來訪問應用的asset和資源文件。
*
@param
context
*/
public
MyDB(Contextcontext)
{
super(context,
DB_NAME,
null,
DB_VERSION);
this.m_context
=
context;
}
public
static
MyDBopenDatabaseReadOnly(Context
context)
{
MyDB
db
=
new
MyDB(context);
try
{
db.createDataBase();
}
catch
(IOException
e)
{
//
TODO
Auto-generated
catch
block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READONLY);
return
db;
}
public
static
MyDBopenDatabaseReadWrite(Context
context)
{
MyDB
db
=
new
MyDB(context);
try
{
db.createDataBase();
}
catch
(IOException
e)
{
//
TODO
Auto-generated
catch
block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READWRITE);
return
db;
}
/**
*創建一個空資料庫,用來存儲已有的資料庫。
*/
public
voidcreateDataBase()
throws
IOException{
boolean
dbExist
=checkDataBase();
if
(dbExist)
{
/*
**如果自己的資料庫的版本改變了,調用這個方法確保在onUpgrade()被調用時
**傳進去的是可寫的資料庫。
*/
SQLiteDatabase
db
=this.getWritableDatabase();
if
(db
!=
null)
{
db.close();
}
}
dbExist
=
checkDataBase();
if
(!dbExist)
{
try
{
/*
**
調用這個方法以確保在預設路徑內產生一個空資料庫,以便在其基礎上復制咱們已有的資料庫。
*/
SQLiteDatabase
db
=this.getReadableDatabase();
if
(db
!=
null)
{
db.close();
}
DataBase();
}
catch
(IOException
e)
{
Log.e("DB",
e.getMessage());
throw
new
Error("Error
ingdatabase");
}
}
}
/**
*
檢查資料庫是否已存在,以避免重復復制。
*
@return
true
if
it
exists,
false
if
itdoesn't
*/
private
static
booleancheckDataBase(){
SQLiteDatabase
checkDB
=
null;
try
{
String
path
=
DB_PATH
+
DB_NAME;
checkDB
=SQLiteDatabase.openDatabase(path,
null,
SQLiteDatabase.OPEN_READONLY);
}
catch
(SQLiteException
e){
//database
does't
exist
yet.
}
if
(checkDB
!=
null)
{
checkDB.close();
}
return
checkDB
!=
null
?
true
:
false;
}
/**
*
把存在asset文件中的資料庫復制的剛創建的空資料庫中。
*
*/
private
voidDataBase()
throws
IOException
{
//
剛創建的空資料庫的路徑
String
outFileName
=
DB_PATH
+
DB_NAME;
//
打開空資料庫
OutputStream
output
=
new
FileOutputStream(outFileName);
byte[]
buffer
=
new
byte[1024*8];
AssetManager
assetMgr
=m_context.getAssets();
for
(int
i
=
1;
i
<=
DB_SPLIT_COUNT;
i++){
//
打開分解的asset文件
String
fn
=
DB_SPLIT_NAME
+String.valueOf(i);
InputStream
input
=
assetMgr.open(fn);
//Log.i("DB",
"opened"
+
fn);
int
length;
while
((length
=
input.read(buffer))
>0)
{
//Log.i("DB",
"read"
+
String.valueOf(length));
output.write(buffer,
0,
length);
//Log.i("DB",
"write"
+
String.valueOf(length));
}
input.close();
}
//Close
the
streams
output.flush();
output.close();
}
/**
B. android 怎麼調用資料庫方法
SQLite也支持SQL標准類型,VARCHAR、CHAR、BIGINT等。
創建資料庫
Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,只要繼承 SQLiteOpenHelper 類,就可以創建資料庫。繼承了SQLiteOpenHelper的子類,必須實現三個方法:
1、構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2、onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3、onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
C. Android開發怎麼查看和管理sqlite資料庫
在Android中可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。
使用DDMS導出sqlite資料庫。
1、首先打開android項目的調試模式,然後找到顯示DDMS:
選擇DDMS
2、切換到DDMS,顯示FileExplorer窗口,找到/data/data/
然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。
這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如sqliteadministrator、sqliteman或者firefox插件sqlitemanager等打開就可以了。
使用adb工具訪問sqlite資料庫
AndroidDebugBridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們知道android是基於linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用shell來訪問android應用中的sqlite資料庫文件。
1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:
2、shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下文件列表和進入到指定目錄。了解閉手昌這兩個命令之後,就可以找到data/data/項目包名/databases:
找到資料庫文件:
接下來就是使用sqlite管理工具來進行轎扒操作了。鍵入sqlite3資料庫名就進入了sqlite管理模式了。
在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用方便,將其路徑注冊到系統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3,就能直接打開sqlite管理工具了。
sqlite管理資料庫篇
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常薯李用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行