2012-08-03 69 views
1

我需要幫助使用Android中使用我現有的sqlite數據庫。如何訪問android項目的資產文件夾中的sqlite數據庫?

我把我的sqlite數據庫放在「/ assets /(mydatabase)」中,但無法使用它。

我正在使用以下代碼。 有時顯示錯誤「無法打開數據庫」,有些時候顯示錯誤,如「無法找到表」。 當我從ddms中提取數據庫文件並使用sqlite瀏覽器打開它時,它會使我的表格意味着我的表格不再存在。

所以請幫助我得到如何使用我現有的SQLite數據庫在Android中的方式只是爲了閱讀和儀式操作。

private SQLiteDatabase MyDataBase; 
private String path="/data/data/mypackagename/mydatabase"; 
try{ 
     MyDataBase=SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READWRITE); 
     Cursor myDbCursor; 
     myDbCursor=MyDataBase.rawQuery("select user,password from login_master", null); 
     String username=myDbCursor.getString(0); 
     String password=myDbCursor.getString(01); 
     Toast.makeText(getBaseContext(), username, 10).show(); 
     Toast.makeText(getBaseContext(), password, 10).show(); 
     MyDataBase.close(); 
    } 
    catch(SQLiteException e){ 
     Toast.makeText(getBaseContext(), e.getMessage(), 10).show(); 
    } 
+0

感謝pinakin有問題,這篇文章幫助+1ü:) – samir 2012-11-23 06:14:33

回答

1

不知道,但這個可以幫你

void checkDB() throws Exception { 
    try { 
     SQLiteDatabase dbe = SQLiteDatabase 
       .openDatabase(
         "/data/data/yourpackagename/databases/yourfilename.sqlite", 
         null, 0); 
     Log.d("opendb", "EXIST"); 
     dbe.close(); 
    } catch (Exception e) { 

     AssetManager am = getApplicationContext().getAssets(); 
     OutputStream os = new FileOutputStream(
       "/data/data/yourpackagename/databases/yourfilename.sqlite"); 
     byte[] b = new byte[100]; 

     int r; 
     InputStream is = am.open("yourfilename.sqlite"); 
     while ((r = is.read(b)) != -1) { 
      os.write(b, 0, r); 
     } 
     Log.i("DATABASE_HELPER", "Copying the database "); 
     is.close(); 
     os.close(); 
    } 

} 
+0

這真的有效Hardik。我錯過了我的代碼中的複製部分。 謝謝 – 2012-08-03 18:39:35

+0

歡迎,並祝你的應用程序.. – 2012-08-04 08:25:04

相關問題