在我几个Android应用中,我需要访问已有的
数据库。这些数据库往往很大,甚至超过asset
文件大约1兆字节的限制。而且在新的版本中数据库需要更新。我在网上,特别是StackOverflow看了一些文章,并做了一些试验,觉得下面的代码能基本上满足我的需求。其主要思路是:1.把数据库分解成几个asset文件。2.当需要打开数据库时,如果数据库不存在,就把那几个asset文件重新合并成一个数据库文件。3.如果数据库的版本改变了,就在onUpgrade()方法中把数据库文件删除掉。下面是代码://数据库的缺省路径privatestaticfinalStringDB_PATH="/data/data/com.mypackage.myapp/databases/"privatestaticfinalStringDB_NAME="mydb.db"privatestaticfinalintDB_VERSION=2privatestaticfinalStringDB_SPLIT_NAME="mydb.db.00"privatestaticfinalintDB_SPLIT_COUNT=3privateSQLiteDatabasem_databaseprivatefinalContextm_context/***Constructor*保存传进来的context参数以用来访问应用的asset和资源文件。*@paramcontext*/publicMyDB(Contextcontext){super(context,DB_NAME,null,DB_VERSION)this.m_context=context}publicstaticMyDBopenDatabaseReadOnly(Contextcontext){MyDBdb=newMyDB(context)try{db.createDataBase()}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace()}db.openDataBase(SQLiteDatabase.OPEN_READONLY)returndb}publicstaticMyDBopenDatabaseReadWrite(Contextcontext){MyDBdb=newMyDB(context)try{db.createDataBase()}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace()}db.openDataBase(SQLiteDatabase.OPEN_READWRITE)returndb}/***创建一个空数据库,用来存储你已有的数据库。*/publicvoidcreateDataBase()throwsIOException{booleandbExist=checkDataBase()if(dbExist){/***如果你的数据库的版本改变了,调用这个方法确保在onUpgrade()被调用时**传进去的是可写的数据库。*/SQLiteDatabasedb=this.getWritableDatabase()if(db!=null){db.close()}}dbExist=checkDataBase()if(!dbExist){一. 安装Win32-ODBC模块
步骤1:
从TOOLS栏目中下载Win32-ODBC.zip,下载完后用winzip解开到一个temp目录,共有三个文件:
Readme
Win32-ODBC.ppd
Win32-ODBC.tar.gz
步骤2:
在DOS窗口下,temp目录中运行下面的DOS命令:ppm install Win32-ODBC.ppd。
二. 准备测试用数据库(Access)
步骤1:
启动MS ACCESS,建立一个新空数据库,命名为odbctest.mdb,保存在某一目录中(记住路径)。
步骤2:
然后新建一个表,建立三个字段:
字段名称 数据类型长度
Name 字符, 长度50
Email字符, 长度50
Age 数字、长整型
将这个表保存为address(注意这个例子中,没有用自动增加的ID。输入若干记录:
Nighthawk [email protected] 20 1234567
John [email protected] 24 0284393293
kit [email protected] 18 3948932
保存后,关闭数据库文件。
步骤3:
打开控制面板中的 ODBC数据源(32位),在用户DSN栏中,找到用户数据源列表,选中名称为“MS Access 97 Database”的一行,然后按“配置”键。
在Database框中按“Select..”,选择步骤1.2中建立的数据库文件odbctest.mdb,按OK即可。ODBC设置中的其它项目全部采用缺省设置,然后就是OK,确定,关闭对话窗口。
评论列表(0条)