我想在android中使用ORMLite预先存在的数据库文件。我有已创建数据库的database.db文件。我想在我的应用程序中使用它。
我的课程扩展了OrmLiteSqliteOpenHelper。
任何人都有想法吗?请帮忙
我使用
将数据库文件复制到数据路径中
public static void copyDataBase(String path,Context c)抛出IOException {
//Open your local db as the input stream
InputStream myInput = c.getAssets().open("Mydb.db");
// Path to the just created empty db
String outFileName = "/data/data/packageName/databases/databaseName";
String outFileName2 = "/data/data/packageName/databases/";
File file = new File(outFileName2);
if(!file.exists())
file.mkdirs();
//Open the empty db as the output stream
OutputStream 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);
}
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
但它不会帮助我。
答案 0 :(得分:0)
由于我不知道你的确切问题是什么,所以在黑暗中这是一种刺痛,但你不能只在OrmLiteSqliteOpenHelper
构造函数中指定数据库文件(和路径)吗?
OrmLiteSqliteOpenHelper(android.content.Context context, String databaseName, android.database.sqlite.SQLiteDatabase.CursorFactory factory, int databaseVersion)
此论坛上还有许多问题涉及打开自定义数据库文件。 This问题不是特定于ORMLite的,但是它们可能会让您前进,因为它打开了自定义数据库文件。
希望这能帮助你一路走来。
答案 1 :(得分:0)
我已通过以下实施解决了这个问题
try {
String destPath = "/data/data/" + context.getPackageName()
+ "/databases";
Log.v("LOG", destPath);
File f = new File(destPath);
if (!f.exists()) {
f.mkdirs();
File outputFile = new File("/data/data/"
+ context.getPackageName() + "/databases",
"Name ofyour Database");
outputFile.createNewFile();
String DatabaseFile = "database file name from asset folder";
InputStream in = context.getAssets().open(DatabaseFile);
OutputStream out = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
Log.v("TAG", "ioexeption");
e.printStackTrace();
}