當前位置:編程學習大全網 - 源碼下載 - Querybuilder項目源代碼

Querybuilder項目源代碼

這裏使用ContentProvider方法來定義數據庫。。

公共類AlarmProvider擴展了ContentProvider //

{

私有靜態最終字符串DB _ NAME = " Alarm.db//數據庫名稱

private static final int DB _ VERSION = 1;//版本號,程序第壹次運行時,數據庫建立,如果

//妳更改數據庫,比如添加壹個表。此時,壹般會更改該值,以便安裝程序並再次運行。

//,數據庫可以自行升級。。如果不更改,通常需要手動刪除數據庫。。

私有靜態最終字符串ALARM _ TABLE _ NAME = " alarm//壹個表名

私有靜態最終int ALARM = 1;//表對應的整數值,相當於id。

私有靜態UriMatcher mUriMathcer//Uri匹配器,它建立Uri、表名和id之間的關系,如下所示:

靜態{

mUriMathcer =新的UriMatcher(UriMatcher。NO _ MATCH);

mUriMathcer.addURI(AlarmInfo。AUTH,“報警”,報警);

}

私有接口創建表接口//表創建接口

{

公共抽象void createAlarmTable(SQLiteDatabase db);

}

//內部類,數據庫幫助器類,實現表創建接口。

私有靜態類DatabaseHelper擴展SQLiteOpenHelper實現CreateTableInterface

{

create table interface mCreateTableInterface = this;

Context mContext = null

//構造函數,調用此函數後,數據庫沒有

//創建。。也就是說,下面的onCreate不會在被調用後立即調用create db。

public DatabaseHelper(Context上下文)

{

super(context,DB_NAME,null,DB _ VERSION);

//log . I(標簽," DatabaseHelper被調用!");

mContext =上下文;

}

@覆蓋

public Void Once Create(SQLite Database DB)//此方法僅在數據庫連接創建數據庫時調用壹次。

{

//創建數據庫表

mcreatetableinterface . createalarmtable(db);

}

@覆蓋

public void on upgrade(SQLite database db,int old version,int new version)//db升級時調用。

{

//log . I(標記," onUpgrade()被調用!");

db . exec SQL(" DROP TABLE IF EXISTS "+ALARM _ TABLE _ NAME);

onCreate(db);

}

@覆蓋

公共void createAlarmTable(SQLiteDatabase數據庫)

{

//創建壹個表

db . exec SQL(" CREATE TABLE "+ALARM _ TABLE _ NAME+"("

+危言聳聽。_ID+"整數主鍵,"

+危言聳聽。_LABEL+"文本不為空,"

+危言聳聽。_TIME+"文本不為空,"

+危言聳聽。_ALERT+"文本不為空,"

+危言聳聽。_REPEAT+"文本不為空,"

+危言聳聽。_ACTIVE+"文本不為空"

+");");

//在表中插入壹些數據。。。

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info。_LABEL+","

+危言聳聽。_TIME+","+危言聳聽。_ALERT+","

+危言聳聽。_REPEAT+","+AlarmInfo。_ACTIVE+

”)值('午餐鬧鈴',' 11 : 45 AM ',' "+標記。聲調+" ',' "+標記。EVERY_DAY+" ',' false ');");

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info。_LABEL+","

+危言聳聽。_TIME+","+危言聳聽。_ALERT+","

+危言聳聽。_REPEAT+","+AlarmInfo。_活動

+")值('工作警報',' 08 : 45 AM ',' "+標簽。聲調+" ',"+" '星期壹,星期二,星期三,星期四,Fri ' "

+",' false ');");

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info。_LABEL+","

+危言聳聽。_TIME+","+危言聳聽。_ALERT+","+AlarmInfo。_REPEAT+","

+危言聳聽。_活動

+")值('工作警報',' 09 : 00 AM ',' "+標簽。聲調+" ',"

+" ' "+標記。周末+" ','假');");

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info。_LABEL+","

+危言聳聽。_TIME+","+危言聳聽。_ALERT+","+AlarmInfo。_REPEAT+","

+危言聳聽。_活動

+")值(' Yoga ',' 10 : 15 PM ',' "+標記。聲調+" ',"+" '孫,周三','假');");

}

}

}

私有DatabaseHelper mDatabaseHelper//定義助手

//重寫下面的插入、刪除、更新、查詢等方法。

@覆蓋

public synchronized int delete(Uri Uri,字符串選擇,String[] selectionArgs)

{

SQLiteDatabase db = null

布爾成功=假;

int count = 0;

嘗試{

db = mdatabasehelper . getwritabledatabase();

db . acquire reference();

成功=真;

開關(mUriMathcer.match(uri)){

案例警報:

count = db . delete(ALARM _ TABLE _ NAME,selection,selection args);

打破;

}

}catch(SQLException e){

e . printstacktrace();

}最後{

if(success == true){

db . release reference();

}

}

返回計數;

}

@覆蓋

公共字符串getType(Uri uri)

{

開關(mUriMathcer.match(uri)){

案例警報:

返回AlarmInfo。內容類型;

默認值:

拋出new IllegalArgumentException("未知URI "+uri);

}

}

@覆蓋

公共同步Uri插入(Uri uri,ContentValues initValues)

{

SQLiteDatabase mSQLiteDatabase = null;

布爾成功=假;

嘗試{

mSQLiteDatabase = mdatabasehelper . getwritabledatabase();

msqlitedatabase . acquire reference();

成功=真;

long mRowId

ContentValues值;

if(initValues == null){

values = new content values();

}否則{

values = initValues

}

開關(mUriMathcer.match(uri)){

案例警報:

mro wid = msqlitedatabase . insert(ALARM _ TABLE _ NAME,

危言聳聽。_ID,values);

if(mro wid & gt;0){

返回uri

}否則{

拋出新的SQLException("未能插入"+uri);

}

}

}catch(SQLException e){

e . printstacktrace();

}最後{

if(成功==真)

msqlitedatabase . release reference();

}

返回null

}

@覆蓋

public boolean onCreate()

{

//log . I("報警提供者"," onCreate()... ");

mDatabaseHelper = new database helper(get context());

返回true

}

@覆蓋

公共同步遊標查詢(Uri uri,String[]投影,字符串選擇,

String[] selectionArgs,String sortOrder)

{

SQLiteQueryBuilder mSQLiteQueryBuilder = new SQLiteQueryBuilder();

開關(mUriMathcer.match(uri)){

案例警報:

msqlitequerybuilder . settables(ALARM _ TABLE _ NAME);

打破;

}

SQLiteDatabase mSQLiteDatabase = mdatabasehelper . getwritabledatabase();

msqlitedatabase . acquire reference();

cursor mCursor = msqlitequerybuilder . query(mSQLiteDatabase,projection,

selection,selectionArgs,null,null,sort order);

msqlitedatabase . release reference();

返回mCursor

}

@覆蓋

公共同步int更新(Uri uri,ContentValues值,字符串選擇,

String[] selectionArgs)

{

SQLiteDatabase mSQLiteDatabase = null;

int count = 0;

布爾成功=假;

嘗試{

mSQLiteDatabase = mdatabasehelper . getwritabledatabase();

msqlitedatabase . acquire reference();

成功=真;

開關(mUriMathcer.match(uri)){

案例警報:

count = msqlite database . update(ALARM _ TABLE _ NAME,values,

selection,selection args);

打破;

默認值:

打破;

}

}catch(SQLException e){

e . printstacktrace();

}最後{

if(成功==真)

msqlitedatabase . release reference();

}

返回計數;

}

}

可以參考安卓報警、查詢、更新等方法的源代碼,基本不做任何改動,只是替換表名。或者補充壹個案例。

  • 上一篇:機器人網站源代碼
  • 下一篇:溜溜球的1A,2A,3A,4A,5A是什麽?
  • copyright 2024編程學習大全網