我在android应用程序中构建了Sqlite数据库。 首先,我在Sqlite Manager中构建了main_category表。然后我将该文件导出到我的应用程序的原始文件夹中。 我的导出文件是.sql文件。 就在这里。
CREATE TABLE "main_category" ("_id" INTEGER PRIMARY KEY NOT NULL ,"main_image" TEXT,"word_audio_file" TEXT,"char_audio_file" TEXT,"hash_record" BOOL NOT NULL ,"record" TEXT, "menu" TEXT);
INSERT INTO "main_category" VALUES(1,'g_a.png','g_a.mp3','g_a_01.mp3','false',NULL,NULL);
所以我使用 FileInputStream。从我的应用程序中读取 代码在这里,
InputStream in= new InputStream() {
@Override
public int read() throws IOException {
File sqlfile1 = new File("C://CellCity//workspace//GokiriKidApp//res//raw//main_category.sql");
return 0;
}
};
try {
InputStreamReader isr=new InputStreamReader(in);
BufferedReader br=new BufferedReader(isr);
SQL_MAIN_CATEGORY= br.readLine();
in.close();
br.close();
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
Log.i("onCreate", "Database Creation");
String categoryTString=SQL_MAIN_CATEGORY;
db.execSQL(categoryTString);
所以当我运行我的代码时出现错误: OutOfMemoryError 并在命令行中锁定数据库(adb shell)
答案 0 :(得分:1)
您正在引用计算机上的文件,而不是Android设备上的文件:
File sqlfile1 = new File("C://CellCity//workspace//GokiriKidApp//res//raw//main_category.sql");
如果您已将要阅读的文件放在原始文件夹中,则使用openRawResource(R.raw.fileName)
这将返回一个可用于读取文件的inputStream,而不必自己创建File对象和inputStream。