如何在手机上运行应用程序的数据库。 我使用的是Android Studio,我的数据库位于资源> MyDataBase.db中 有没有办法更新这个文件?
我有自己的sqlite数据库,我插入数据然后我想用新数据获取文件。
我不使用模拟器,我的数据库是由SQLite Browser创建的。
[编辑]
人们说这是this问题的重复。 但是我想在代码行中做同样的事情而不是在命令中。
答案 0 :(得分:0)
是的,您可以通过多种方式进行编辑。其中一个是使用this等库。看看它并在您的应用程序中尝试。
答案 1 :(得分:0)
如果您想在运行时编辑应用的资源文件夹中的文件 - 这是不可能的。您应该将此数据库复制到内部/外部存储器并在此之后进行编辑。
答案 2 :(得分:0)
您无法将数据写入asset / Raw文件夹,因为它是打包的(.apk),资产文件夹在运行时是只读的。
您需要选择一个不同的存储位置,这里有一个方法可以将db备份到您的sdcard(外部存储)dbName = MyDataBase.db:
public static void backupDBonSDcard(Context context, String dbName){
String DB_PATH = context.getDatabasePath(dbName).getPath();
Log.d("DB_PATH:" + DB_PATH);
if(checkDataBase(DB_PATH)){
InputStream myInput;
try {
Log.e("[backupDBonSDcard] saving file to SDCARD");
myInput = new FileInputStream(DB_PATH);
// Path to the just created empty db
String outFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + java.io.File.separator + dbName;
//Open the empty db as the output stream
OutputStream myOutput;
try {
myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
} catch (FileNotFoundException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//Close the streams
if(myOutput!=null){
myOutput.flush();
myOutput.close();
}
if(myInput!=null)
myInput.close();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else{
Log.d("DB "+dbName+" not found");
}
}
public static boolean checkDataBase(String fileName) {
java.io.File dbFile = new java.io.File(fileName);
return dbFile.exists();
}
不要忘记在清单中添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />