android开发将数据库文件与项目包一起打包成apk文件夹,ANDROID开发:将数据库文件与项目包一起打包成APK文件...

如题。我们做开发,使用SQLITE数据库。完成开发后发布应用软件前,需要将数据库文件的数据作为基础数据与项目一起打包成APK文件发布。要达成这个目标,有几步要走:

1. 开发时创建数据库和数据表;

2. 开发时给数据库存入数据;

3. 开发完后 发布应用软件前 将数据库拷贝到项目包里,当用户安装时即可使用软件自带的数据库数据。

具体做法步骤如下:

1、创建数据库和数据表,使用DatabaseHelper类封装数据库操作。下面代码是封装好的操作数据库的类MyDataBaseAdapter。当需要操作数据库(增删查改功能)时,需要先打开数据库:MyDataBaseAdapter mybase=new MyDataBaseAdapter(this); mybase.open();

public class MyDataBaseAdapter {

//used for print log

private static final String TAG= "MyDataBaseAdapter";

//public static final String KEY_ID="_id";

public static final String KEY_ACCOUNT="account";

public static final String KEY_PWD="password";

//DB name

private static final String DB_NAME="haodi.db";

private static final int DB_VERSION=1;

//DB tables

private static final String DB_TABLE="users";

private static final String PRODUCTS_TABLE="products";

public static final String PRODUCT_ID="_id";

public static final String PRODUCT_NAME="name";

public static final String PRODUCT_EFFECT="effect";

//local context object

private Context mContext=null;

//create tables command string.

private static final String DB_CREATE="CREATE TABLE "

+ DB_TABLE +" ( "+ KEY_ACCOUNT + " VARCHAR(20) PRIMARY KEY , "

+KEY_PWD+ " VARCHAR(20) )";

private static final String PROUDCTS_TABLE_CREATE=" CREATE TABLE "

+ PRODUCTS_TABLE + " ( " + PRODUCT_ID +" INTEGER PRIMARY KEY , "+

PRODUCT_NAME+ " VARCHAR(20) , "

+PRODUCT_EFFECT+" VARCHAR(30) )";

//execute open() to open db, and save to return db object.

private SQLiteDatabase mSQLiteDatabase = null;

//inherited from SQLiteOpenHelper

private DatabaseHelper mDatabaseHelper =null;

private static class DatabaseHelper extends SQLiteOpenHelper{

//constructor funtion- to create a db.

DatabaseHelper(Context context){

//create a db when invote getWritableDatabase()or getReadabledatabase().

super(context, DB_NAME, null, DB_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db){

//create a table when no.

db.execSQL(DB_CREATE);

db.execSQL(PROUDCTS_TABLE_CREATE);

}

//upgrade db.

@Override

public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){

db.execSQL("DROP TABLE IF EXISTS users");

//db.execSQL("DROP TABLE IF EXISTS"+ );

onCreate(db);

}

}

//construct fun- get Context.

public MyDataBaseAdapter(Context context){

mContext=context;

}

//open db,return db obj.

public void open() throws SQLException{

mDatabaseHelper =new DatabaseHelper(mContext);

mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();

}

public void close(){

mDatabaseHelper.close();

}

// for table users.

public long insertData(String account, String pwd){

ContentValues initialValues= new ContentValues();

initialValues.put(KEY_ACCOUNT, account);

initialValues.put(KEY_PWD, pwd);

return mSQLiteDatabase.insert(DB_TABLE, null, initialValues);

}

public boolean deleteData(String account){

return mSQLiteDatabase.delete(DB_TABLE,KEY_ACCOUNT+" = "+account,null)>0;

}

public Cursor fetchAllData(){

return mSQLiteDatabase.query(DB_TABLE, new String[]{KEY_ACCOUNT,KEY_PWD}, null, null, null, null, null);

}

public Cursor fetchData(String account){

Cursor cursor=

mSQLiteDatabase.query(DB_TABLE, new String[]{KEY_ACCOUNT,KEY_PWD}, KEY_ACCOUNT+" = '"+account+"'", null, null, null, null);

if (cursor!=null) {

cursor.moveToFirst();

}

return cursor;

}

public boolean updateData(String account, String pwd){

ContentValues args =new ContentValues();

args.put(KEY_ACCOUNT, account);

args.put(KEY_PWD, pwd);

return mSQLiteDatabase.update(DB_TABLE, args, KEY_ACCOUNT+"="+account, null)>0;

}

2、 运行后,便创建了数据库和数据表。这时为了更方便地插入数据,可以将生成的数据库导出来,使用SQLITE 的浏览器SQLite Database Browser 2.0 b1 打开,这样就可以向数据库和数据表中插入数据。插入数据后,再将数据库导入DDMS下的目录中。具体步骤如下:

A。创建MyDataBaseAdapter类后,运行项目并想方法new 它,这样生成了数据库haodi.db。在MyEclipse中打开DDMS视图模式,在FileExplore下,有许多目录,打开目录 data/data/test.com/database,就可以看到haodi.db数据库文件,如下图。 test.com 即是你项目包名。

B。导出数据库文件进行编辑。点击上图右上角的向左按钮,就可导出到桌面。再用SQLITE数据库浏览器打开导出的数据库文件haodi.db进行编辑,如插入数据等。

C。将编辑好的数据库文件导入回DDMS目录下。点击右上角的向右按钮即可,覆盖原来的haodi.db文件。

这样数据库中就有你编辑好的数据了。

3、将数据库文件haodi.db拷贝到你项目res/raw 目录下。如果没有raw文件夹,就新建一个。目录结构如下图:

4、在刚打开应用软件时,使用代码将res/raw下的数据库文件复制到手机SD卡 data/data/test.com/database 目录下。代码可参考http://www.oschina.net/code/snippet_203635_9207。

5、打包项目APK文件,这样用户安装后就可以使用haodi.db数据库文件中的数据了。搞定!

PS:

1.创建数据表一定要有_id字段---如果你需要使用SimpleCursorAdapter的话,并且fetchData()的返回值中应该有_id字段的内容,不然会报如下错误: column '_id' does not exist。

ALL RIGHTS RESERVE!