有關SQLite資料庫的一些操作

2021-09-01 04:10:23 字數 2466 閱讀 9540

1.在程式中如何使用自定義的資料庫

在程式外部獲取到資料庫以後,將這個資料庫放到res/raw目錄下。如果資料庫過大,可以考慮將資料庫的字尾名改為.jpg這樣做的目的是系統會幫你壓縮這個資料庫。

當第一次開啟應用程式的時候,資料庫會被載入到data/data目錄下。這個需要在模擬器環境下才可以看到。在測試的時候,可以檢查該目錄下是否成功生成資料庫。也可以在ddms裡面把資料庫取出來,使用sqlitedev來檢視表結構等等。

需要在程式中執行一些資料庫操作的時候,可以先在sqlitedev裡面用sql語句進行測試。如果成功執行了,再寫到**裡面。這樣效率會比較高。

public class databasehelper extends sqliteopenhelper

/*** 第一次執行程式的時候,判斷是否存在資料庫,不存在就加入

* * */

@override

public void oncreate(sqlitedatabase db)

/*** 資料庫版本號發生變化的時候被呼叫,更新資料庫和資料庫版本號

* * */

@override

public void onupgrade(sqlitedatabase db, int oldversion, int newversion)

/*** 複製資料庫, 不存在或者強制要求覆蓋時覆蓋

* * @param iscover

*/public static void copydb(context context, boolean willcover) else if (!willcover)

inputstream is = context.getresources().openrawresource(r.raw.telloc);

fileoutputstream fos;

try

fos.close();

is.close();

// log.e(tag, "create new database");

} catch (filenotfoundexception e) catch (ioexception e) }

}

使用

helper = new databasehelper(mycontext, databasehelper.db_name);
string areacity = "";

cursor cursor = helper.getreadabledatabase().query(

"area_code", //表名

new string, //欄位名

"area_code = ? or area_code = ?", //查詢前面3位或者4位

new string,

null, null, null);

if(cursor.getcount() == 0)

else//有查詢出記錄,取第一條

}cursor.close();//使用後記得關閉

return areacity;

3.建立自己的資料庫

string sqlforcreatetable = "create table [my_calls]("+" [_id]integer, "+" [number]integer, "+" [date]integer, "+" [duration]integer, "+" [type]integer, "+" [name]varchar(50), "+" [tel_location]varchar(100))";

log.e("sqlforcreatetable", sqlforcreatetable);

db.execsql(sqlforcreatetable);

4.查詢系統資料庫中的字段,新增到自己的資料庫

cursor cursor  = mycontext.getcontentresolver().query(calllog.calls.content_uri, new string, null, null, null);

if(cursor != null)//獲取查詢出來的記錄,新增到自己的表中

}cursor.close();

總結:

作業系統的資料庫的時候,系統已經將這個操作封裝為providor,可以直接使用例如:

mycontext.getcontentresolver().query(.......);
而操作自己的資料庫的時候,需要new乙個資料庫物件,例如:

helper.getreadabledatabase().query(........);
操作後返回的是乙個cursor物件。這個物件物件包含了查詢出來的結果

一般需要對這個cursor中的物件進行讀取。注意讀取後要關閉這個物件。

有關「鏈結資料庫」的一些問題

今天定義了乙個 鏈結資料庫 它主要用來在本地資料庫上建立一條對於遠端資料庫的 鏈結 使用時就像操作本地資料表 只能操作表和視表 一樣,給程式設計工作帶來了極大的便利和靈活。在使用時遇到一些問題,特記錄下來 1 可以利用系統儲存過程或企業管理器來建立,應該都比較簡單,但我在做的時候卻搞了半天也不成功,...

與Access資料庫結構有關的一些函式

與資料庫結構有關的一些函式 1 動態改變欄位名稱 uses comobj access tablename 表名 oldcolname 原欄位名 newcolname 新欄位名 procedure renamefield const tablename,oldcolname,newcolname s...

android筆記之SQLite 資料庫操作

資料庫的初始化 public class blacklistdb extends sqliteopenhelper override public void oncreate sqlitedatabase sqlitedatabase override public void onupgrade s...