Sqlite数据库被锁定在命令行(adb shell)+ Android中

时间:2010-08-13 09:27:08

标签: android sqlite

我在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)

1 个答案:

答案 0 :(得分:1)

您正在引用计算机上的文件,而不是Android设备上的文件:

 File sqlfile1 = new File("C://CellCity//workspace//GokiriKidApp//res//raw//main_category.sql");

如果您已将要阅读的文件放在原始文件夹中,则使用openRawResource(R.raw.fileName)

在设备上引用其位置

这将返回一个可用于读取文件的inputStream,而不必自己创建File对象和inputStream。