首先需要将数据库文件复制到/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;
}
}