Android 个人理财工具二:使用SQLite实现启动时初始化数据

Android 个人理财工具二:使用SQLite实现启动时初始化数据,第1张

概述  关于SQLite      sqlite是嵌入式SQL数据库引擎SQLite(SQLiteEmbeddableSQLDatabaseEngine)的一个扩展。SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(Clibrary),

   关于sqlite

       sqlite是嵌入式sql数据库引擎sqlite(sqlite Embeddable sql Database Engine)的一个扩展。sqlite是一个实现嵌入式sql数据库引擎小型C语言库(C library),实现了独立的,可嵌入的,零配置的sql数据库引擎。特性包括:事务 *** 作是原子,一致,孤立,并且持久的,即使在系统崩溃和电源故障之后。 零配置――不需要安装和管理。 实现了绝大多数sql92标准。

       我在多年前就关注sqlite的发展,非常看好sqlite的前景,因为在移动、嵌入式的应用里面,sqlite具有非常好的特性来满足需求。

       早在symbian 9.0 之前,openc 出来后,我就研究sqlite到symbian的移植。后来symbian9.3 nokia就已经集成了sqlite。

       至今j2me还不支持sqlite,可以说是个遗憾。

       现在我们来看看androID sqlitedatabase 包里面的关键API:

Java代码

static sqliteDatabase openorCreateDatabase(String path,sqliteDatabase.CursorFactory factory) //打开数据库 Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit) //执行查询sql voID execsql(String sql) //执行非查询sql 

       sdk 1.0 关于cursor和sqlite的相关API对于前面的版本改变很多。

       我觉得关键是没了query(String sql)这个简单的方法了,很不爽。

       不过如果你对新的query方法了解深入点,发现其实也就一样。

       实例代码

       我们来看两个例子。

Java代码

//执行select type,name from sqlite_master where name='colaconfig' String col[] = {"type","name" };  Cursor c =db.query("sqlite_master",col,"name='colaconfig'",null,null);  int n=c.getCount(); //执行多表查询 //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","a.ID=b.ID",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+""); } 

       现在来看看我们如何在这个理财工具里面应用它。

       我们需要在程序的第一次启动时,创建数据库,然后把基本的表创建好,并且初始化好账目表。

       对于上一篇中的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,null); //创建数据库  Log.v(TAG,"db path="+db.getPath());  }   public voID Createtable_acctitem() {  try{  db.execsql("CREATE table acctitem (" //创建账目表   + "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",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",table exists.");  }  }   public voID Initacctitem() {   db.execsql("insert into acctitem values (100,'收入',0)");  db.execsql("insert into acctitem values (100100,100,'工资',0)");  db.execsql("insert into acctitem values (200,'支出',1)");  db.execsql("insert into acctitem values (200100,200,'生活用品',1)");  db.execsql("insert into acctitem values (200101,'水电煤气费',1)");  db.execsql("insert into acctitem values (200103,'汽油费',1)");  Log.v("cola","insert into ok");   }    public voID querytable_acctitem(){   }   public voID FirstStart(){  //如果是第一次启动,就不存在colaconfig这张表.  try{  String col[] = {"type",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 个人理财工具六:显示账单明细 下

                       Android 个人理财工具五:显示账单明细 上

                       Android 个人理财工具四:添加账单页面 下

                       Android 个人理财工具三:添加账单页面 上

                       Android 个人理财工具二:使用SQLite实现启动时初始化数据

                       Android 个人理财工具一:项目概述与启动界面的实现

       以上就是对AndroID sql的讲解及实例,后续继续做个人理财项目,谢谢大家支持!

总结

以上是内存溢出为你收集整理的Android 个人理财工具二:使用SQLite实现启动时初始化数据全部内容,希望文章能够帮你解决Android 个人理财工具二:使用SQLite实现启动时初始化数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存