【发布时间】:2022-01-13 23:20:16
【问题描述】:
这是我的资产文件夹中的数据库名称,我看到有人说资产不可写。
public class DatabaseAssets_Milestones extends SQLiteOpenHelper {
private static String dbName = "milestones.db";
Context context;
File dbFile;
这是我的构造函数。
public DatabaseAssets_Milestones(@Nullable Context context) {
super(context, dbName, null, 2);
this.context = context;
File DB_PATH = context.getDatabasePath(dbName);
String db = DB_PATH.getAbsolutePath();
dbFile = new File(db);
if(!dbFile.exists()){
if (!dbFile.getParentFile().exists()) {
dbFile.mkdirs();
}
copyDataBase(dbFile.getPath());
}
}
这是我的复制数据库方法。
private void copyDataBase(String dbPath){
try{
InputStream assetDB = context.getAssets().open("databases/"+"milestones.db");
OutputStream appDB = new FileOutputStream(dbPath,false);
byte[] buffer = new byte[1024];
int length;
while ((length = assetDB.read(buffer)) > 0) {
appDB.write(buffer, 0, length);
}
appDB.flush();
appDB.close();
assetDB.close();
}catch(IOException e){
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
我在这里遗漏了什么吗?还是我的其他代码中的某些内容?
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + dbName);
onCreate(db);
}
}
【问题讨论】:
标签: sqlite android-studio android-sqlite android-assets