2012-08-03 128 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

相关问题