LG手机无法访问SqLite数据库

时间:2012-06-15 11:31:39

标签: android database sqlite sqliteopenhelper lg

我们已经开发了一个预装了SQLite数据库的Android平台应用程序。使用SQLiteOpenHelper,在第一次执行应用程序时,我们从“Assets”复制数据库以获取应用程序数据目录(/ data / data / br.com.lwu / databases / appdatabase.sqlite)。 这在大多数设备中都有效。但我们在下面的LG手机上遇到了问题:

  • LG Optimus One
  • LG-​​P500
  • LG-​​P500H

显然,数据库已正确复制。但是应用程序无法访问数据库(这样的表)。 我们需要帮助!

// Copy Database:

    private static String DB_PATH = "/data/data/br.com.lwu/databases/";
    private static String DB_NAME = "appdatabase.sqlite";


private void copyDataBase() throws IOException{
        InputStream myInput = myContext.getAssets().open(DB_NAME);

        String outFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0){
            myOutput.write(buffer, 0, length);
        }

        myOutput.flush();
        myOutput.close();
        myInput.close();

    }


public void openDataBase() throws SQLException{ 
        String myPath = DB_PATH + DB_NAME;

        if (myDataBase == null) {
            myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
        }

    }

 @Override
    public synchronized void close() {

        super.close();

        if (myDataBase != null)
            if (myDataBase.isOpen()) {
                myDataBase.close();
                myDataBase = null;

            }

    }    

1 个答案:

答案 0 :(得分:0)

尝试更改:

myDataBase = SQLiteDatabase.openDatabase(myPath, null,
            SQLiteDatabase.OPEN_READWRITE);

对此:

myDataBase = SQLiteDatabase.openDatabase(myPath, null,
          SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.NO_LOCALIZED_COLLATORS);

如果数据库中缺少必要的表格,则不需要您使用android vm所需的强制表 android_metadata