如题。我们做开发,使用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!