android 对apk中已经存在的数据库操作

首先需要将数据库文件复制到/data/data/(apk包名)/databases目录下,然后再进行操作

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import com.apk包名.R;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class readDateBase {
	
	private static final String DATABASE_PATH = "/data/data/(apk包名)/databases";
	private static final String DATABASE_NAME = "calendar_calendar.db";
	public static final String DATABASE_TABLE ="mainTable";
	public static final int    DATABASE_VERSION = 1;
	public static final String KEY_ID="id";
	public static final String KEY_Month_ID="month_id"; 
	public static final String KEY_YEAR = "year";
	public static final String KEY_MONTH = "month";
	public static final String KEY_DAY = "day";
	public static final String KEY_WEEKDAY = "weekday";
	public static final String KEY_YEAR_LUNAR = "year_lunar";
	public static final String KEY_MONTH_LUNAR = "month_lunar";
	public static final String KEY_DAY_LUNAR = "day_lunar";
	public static final String KEY_ANIMALS = "animals";
	public static final String KEY_YI = "yi";
	public static final String KEY_JI = "ji";
	private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME;
	private Context context;
	private SQLiteDatabase database;

	public readDateBase(Context context){
		this.context = context;
		
		File file = new File(outFileName);
		if (file.exists()) {
			database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
			if (database.getVersion() != DATABASE_VERSION) {
				database.close();
				file.delete();	
			}
		}
		
		try {
			buildDatabase();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void buildDatabase() throws Exception{
		InputStream myInput = context.getResources().openRawResource(R.raw.test);//存放在res/raw文件夹下的test.db文件
		
		File file = new File(outFileName);
		File dir = new File(DATABASE_PATH);
		if (!dir.exists()) {
			if (!dir.mkdir()) {
				throw new Exception("创建数据库目录失败");
			}
		}
		
		if (!file.exists()) {			
			try {
				OutputStream myOutput = new FileOutputStream(outFileName);
				byte[] buffer = new byte[1024];
		    	int length;
		    	while ((length = myInput.read(buffer))>0){
		    		myOutput.write(buffer, 0, length);
		    	}
		    	myOutput.close();
		    	myInput.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

       	public Cursor select(int month){//查询操作,此部分是自定义数据库操作
	     database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
	     Cursor cursor = database.query(DATABASE_TABLE, null, KEY_Month_ID+"=?",new String[]{String.valueOf(month)}, null, null, null);
	     return cursor;
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值