欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 個(gè)人理財(cái)工具二:使用SQLite實(shí)現(xiàn)啟動(dòng)時(shí)初始化數(shù)據(jù)

 更新時(shí)間:2016年08月30日 09:59:48   投稿:lqh  
本文主要介紹 Android 使用SQLite實(shí)現(xiàn)啟動(dòng)時(shí)初始化數(shù)據(jù),這里對(duì)SQLite 的數(shù)據(jù)庫進(jìn)行詳解,附有示例代碼,有興趣的小伙伴可以參考下

   關(guān)于SQLite

       sqlite是嵌入式SQL數(shù)據(jù)庫引擎SQLite(SQLite Embeddable SQL Database Engine)的一個(gè)擴(kuò)展。SQLite是一個(gè)實(shí)現(xiàn)嵌入式SQL數(shù)據(jù)庫引擎小型C語言庫(C library),實(shí)現(xiàn)了獨(dú)立的,可嵌入的,零配置的SQL數(shù)據(jù)庫引擎。特性包括:事務(wù)操作是原子,一致,孤立,并且持久的,即使在系統(tǒng)崩潰和電源故障之后。 零配置——不需要安裝和管理。 實(shí)現(xiàn)了絕大多數(shù)SQL92標(biāo)準(zhǔn)。

       我在多年前就關(guān)注sqlite的發(fā)展,非??春胹qlite的前景,因?yàn)樵谝苿?dòng)、嵌入式的應(yīng)用里面,sqlite具有非常好的特性來滿足需求。

       早在symbian 9.0 之前,openc 出來后,我就研究sqlite到symbian的移植。后來symbian9.3 nokia就已經(jīng)集成了sqlite。

       至今j2me還不支持sqlite,可以說是個(gè)遺憾。

       現(xiàn)在我們來看看android sqlitedatabase 包里面的關(guān)鍵api:

Java代碼

static SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory) //打開數(shù)據(jù)庫 
Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) //執(zhí)行查詢SQL 
void execSQL(String sql) //執(zhí)行非查詢sql 

       sdk 1.0 關(guān)于cursor和sqlite的相關(guān)api對(duì)于前面的版本改變很多。

       我覺得關(guān)鍵是沒了query(String sql)這個(gè)簡(jiǎn)單的方法了,很不爽。

       不過如果你對(duì)新的query方法了解深入點(diǎn),發(fā)現(xiàn)其實(shí)也就一樣。

       實(shí)例代碼

       我們來看兩個(gè)例子。

Java代碼

//執(zhí)行select type,name from sqlite_master where name='colaconfig' 
String col[] = {"type", "name" }; 
 Cursor c =db.query("sqlite_master", col, "name='colaconfig'", null, null, null, null); 
 int n=c.getCount(); 
//執(zhí)行多表查詢 
//select fee,desc from acctite a,bills b where a.id=b.id 
String col2[] = {"fee", "desc" }; 
Cursor c2 =db.query("acctitem a,bills b", col, "a.id=b.id", null, null, null, null); 
int n2=c2.getCount(); 
Log.v("cola","c2.getCount="+n2+""); 
 
c2.moveToFirst(); 
int k = 0; 
while(!c2.isAfterLast()){ 
 String ss = c2.getString(0) +", "+ c2.getString(1);  
 c2.moveToNext(); 
  
 Log.v("cola","ss="+ss+""); 
} 

       現(xiàn)在來看看我們?nèi)绾卧谶@個(gè)理財(cái)工具里面應(yīng)用它。

       我們需要在程序的第一次啟動(dòng)時(shí),創(chuàng)建數(shù)據(jù)庫,然后把基本的表創(chuàng)建好,并且初始化好賬目表。

       對(duì)于上一篇中的initapp方法,我們需要改造成:

Java代碼

public void initApp(){ 
 BilldbHelper billdb=new BilldbHelper(this); 
 billdb.FirstStart(); 
 billdb.close(); 
} 

       下面我們給出BilldbHelper.java 代碼:

Java代碼

package com.cola.ui; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.util.Log; 
/** 
 * Provides access to a database of notes. Each note has a title, the note 
 * itself, a creation date and a modified data. 
 */ 
public class BilldbHelper { 
 private static final String TAG = "Cola_BilldbHelper"; 
 private static final String DATABASE_NAME = "cola.db"; 
 
 SQLiteDatabase db; 
 Context context; 
 
 BilldbHelper(Context _context) { 
 context=_context; 
 db=context.openOrCreateDatabase(DATABASE_NAME, 0, null); //創(chuàng)建數(shù)據(jù)庫 
 Log.v(TAG,"db path="+db.getPath()); 
 } 
 
 public void CreateTable_acctitem() { 
 try{ 
 db.execSQL("CREATE TABLE acctitem (" //創(chuàng)建賬目表 
  + "ID INTEGER PRIMARY KEY," 
  + "PID integer," 
  + "NAME TEXT," 
  + "TYPE INTEGER"  
  + ");"); 
 Log.v("cola","Create Table acctitem ok"); 
 }catch(Exception e){ 
 Log.v("cola","Create Table acctitem err,table exists."); 
 } 
 } 
 
 public void CreateTable_bills() { 
 try{ 
 db.execSQL("CREATE TABLE bills (" 
  + "ID INTEGER PRIMARY KEY," 
  + "fee integer," 
  + "userid integer," 
  + "sdate TEXT," 
  + "stime TEXT," 
  + "desc TEXT"  
  + ");"); 
 Log.v("cola","Create Table acctitem ok"); 
 }catch(Exception e){ 
 Log.v("cola","Create Table acctitem err,table exists."); 
 } 
 } 
 
 public void CreateTable_colaconfig() { 
 try{ 
 db.execSQL("CREATE TABLE colaconfig (" 
  + "ID INTEGER PRIMARY KEY," 
  + "NAME TEXT" 
  + ");"); 
 Log.v("cola","Create Table colaconfig ok"); 
 }catch(Exception e){ 
 Log.v("cola","Create Table acctitem err,table exists."); 
 } 
 } 
 
 public void InitAcctitem() { 
 
 db.execSQL("insert into acctitem values (100,0,'收入',0)"); 
 db.execSQL("insert into acctitem values (100100,100,'工資',0)"); 
 db.execSQL("insert into acctitem values (200,0,'支出',1)"); 
 db.execSQL("insert into acctitem values (200100,200,'生活用品',1)"); 
 db.execSQL("insert into acctitem values (200101,200,'水電煤氣費(fèi)',1)"); 
 db.execSQL("insert into acctitem values (200103,200,'汽油費(fèi)',1)"); 
 Log.v("cola","insert into ok"); 
 
 } 
 
 
 public void QueryTable_acctitem(){ 
 
 } 
 
 public void FirstStart(){ 
 //如果是第一次啟動(dòng),就不存在colaconfig這張表. 
 try{ 
 String col[] = {"type", "name" }; 
 Cursor c =db.query("sqlite_master", col, "name='colaconfig'", null, null, null, null); 
 int n=c.getCount(); 
 if (c.getCount()==0){ 
 CreateTable_acctitem(); 
 CreateTable_colaconfig(); 
 CreateTable_bills(); 
 InitAcctitem(); 
  
 } 
 
 Log.v("cola","c.getCount="+n+""); 
 
 
 
 }catch(Exception e){ 
 Log.v("cola","e="+e.getMessage()); 
 } 
 
 } 
 
 public void close(){ 
 db.close(); 
 } 
} 

        系列文章:

                       Android 個(gè)人理財(cái)工具六:顯示賬單明細(xì) 下

                       Android 個(gè)人理財(cái)工具五:顯示賬單明細(xì) 上

                       Android 個(gè)人理財(cái)工具四:添加賬單頁面 下

                       Android 個(gè)人理財(cái)工具三:添加賬單頁面 上

                       Android 個(gè)人理財(cái)工具二:使用SQLite實(shí)現(xiàn)啟動(dòng)時(shí)初始化數(shù)據(jù)

                       Android 個(gè)人理財(cái)工具一:項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn)

       以上就是對(duì)Android SQL的講解及實(shí)例,后續(xù)繼續(xù)做個(gè)人理財(cái)項(xiàng)目,謝謝大家支持!

相關(guān)文章

  • Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程

    Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程

    這篇文章主要介紹了Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程,文中舉了MOTO XT800手機(jī)(估計(jì)已經(jīng)落伍很久了--)的例子來說明如何解決雙卡雙待時(shí)的短信異常問題,需要的朋友可以參考下
    2016-02-02
  • Android BSearchEdit 搜索結(jié)果選擇框的實(shí)例代碼

    Android BSearchEdit 搜索結(jié)果選擇框的實(shí)例代碼

    EditText搜索結(jié)果下拉框、自動(dòng)or回調(diào)模式、可diy、使用超簡(jiǎn)便。這篇文章主要介紹了Android BSearchEdit 搜索結(jié)果選擇框的實(shí)例代碼,需要的朋友可以參考下
    2019-10-10
  • Android EdText編輯框禁止輸入表情符號(hào)(使用正則表達(dá)式)

    Android EdText編輯框禁止輸入表情符號(hào)(使用正則表達(dá)式)

    這篇文章主要介紹了Android EdText編輯框禁止輸入表情符號(hào)使用正則表達(dá)式,需要的朋友可以參考下
    2017-06-06
  • 使用adb命令從電腦傳文件到手機(jī)(傳文件)

    使用adb命令從電腦傳文件到手機(jī)(傳文件)

    很多朋友糾結(jié)使用adb命令從電腦傳文件到手機(jī)可以嗎,使用adb命令從電腦傳文件到手機(jī)可以嗎安全嗎?答案在本文中,對(duì)adb命令傳輸文件到手機(jī)或者從手機(jī)傳文件到電腦相關(guān)知識(shí)感興趣的朋友一起通過本文學(xué)習(xí)吧
    2022-11-11
  • android主線程和子線程之間消息傳遞詳解

    android主線程和子線程之間消息傳遞詳解

    這篇文章主要介紹了android主線程和子線程之間消息傳遞詳解,主線程發(fā)送消息到子線程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • android 多線程技術(shù)應(yīng)用

    android 多線程技術(shù)應(yīng)用

    能夠在屏幕上“實(shí)時(shí)地顯示”時(shí)間的流逝,單線程程序是無法實(shí)現(xiàn)的,必須要多線程程序才可以實(shí)現(xiàn),即便有些計(jì)算機(jī)語言可以通過封裝好的類實(shí)現(xiàn)這一功能,但從本質(zhì)上講這些封裝好的類就是封裝了一個(gè)線程,具體祥看本文
    2012-12-12
  • Android版音樂播放器

    Android版音樂播放器

    這篇文章主要為大家詳細(xì)介紹了Android版音樂播放器的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android系統(tǒng)圖片分享工具類

    Android系統(tǒng)圖片分享工具類

    這篇文章主要為大家詳細(xì)介紹了Android系統(tǒng)自帶分享圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼

    Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了Android自定義View繪制隨機(jī)生成圖片驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android實(shí)現(xiàn)藍(lán)牙(BlueTooth)設(shè)備檢測(cè)連接

    Android實(shí)現(xiàn)藍(lán)牙(BlueTooth)設(shè)備檢測(cè)連接

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)藍(lán)牙(BlueTooth)設(shè)備檢測(cè)連接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論