版权声明:没事随便转 https://blog.csdn.net/qq_41816123/article/details/84873258
先建一个工具类MigrateDBUtil
package com.example.myapplication2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author a-yuexia
* @data 2018-12-7
*/
public class MigrateDBUtil {
private static final String TAG = "MigrateDBUtil";
private static Context sContext;
public static void migrateDB(Context context) {
sContext = context;
migrate();
deleteOldDB();
}
/**
* 判断data/data/packageName/database内是否存在kuaiyun.db,
* 不存在,开始迁移.
*/
private static void migrate() {
//你在转储之前要先创建一个数据库这样才有databases这个文件夹,不然会报空指针
File file = new File("/data/data/com.example.myapplication2/databases/kuaiyu.db");
if (!file.exists()) {
FileOutputStream writer = null;
InputStream reader = null;
try {
Log.d(TAG, "1: ");
reader = sContext.getAssets().open("station.db");
Log.d(TAG, "2: ");
file.createNewFile();
writer = new FileOutputStream(file);
byte[] bytes = new byte[1024];
int i;
while ((i = reader.read(bytes)) != -1) {
writer.write(bytes, 0, i);
}
Log.d(TAG, "3: ");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
if (reader != null) {
reader.close();
}
} catch (IOException e) {
}
}
}
}
/**
* 初始化数据库
* 迁移数据库 Version为1.
*/
public static SQLiteDatabase initDatabase(Context context) {
return DataBaseHelper.getInstance(context).getReadableDatabase();
}
private static void deleteOldDB() {
sContext.deleteFile("station.db");
}
}
station.db存放的位置和文件夹名称已及注意转储数据库的版本
像我的station.db是24那么我转储之后理性的就是25.总之不能比24低
//创建个数据库生成databases文件夹
DataBase dbHelper = new DataBase(MainActivity.this, "test_db",null,1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
//然后转储数据库
MigrateDBUtil.migrateDB(MainActivity.this);
强调一下啊,你现在是有两个数据库,用哪个数据库的表就new哪个数据库注意版本version别返回主菜单就从2变成1,这不符合逻辑,
DataBase dbHelper = new DataBase(StartActivity.this, "test_db",null,1);
db = dbHelper.getWritableDatabase();
//转存数据库引用
dbstart=MigrateDBUtil.initDatabase(this);
DateBaseHelper
package com.example.myapplication2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by a-yuexia on 2018/12/7.
*/
public class DataBaseHelper extends SQLiteOpenHelper{
public final static String name = "kuaiyu.db";
public static final int version = 25;
private static DataBaseHelper dataBaseHelper = null;
public DataBaseHelper (Context context) {
super(context, name, null, version);
}
public static DataBaseHelper getInstance(Context context) {
if (dataBaseHelper == null) {
dataBaseHelper = new DataBaseHelper (context);
}
return dataBaseHelper ;
}
public DataBaseHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
小编忘记改类名自己弄一下
DateBase
package com.example.myapplication2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by a-yuexia on 2018/12/7.
*/
public class DataBase extends SQLiteOpenHelper {
public DataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String stu_table="create table startinfo(id integer primary key autoincrement,name text)";
db.execSQL(stu_table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
好了数据库转储结束了
有什么疑问或者意见都可以联系我
QQ:2714730493