2015-03-31 115 views
0

我已經使用特定應用程序在外部存儲中創建了數據庫,並使用相同的應用程序創建了表。現在我想從一個新的android應用程序訪問該數據庫中的數據,所以我必須使用內容提供者,否則我可以直接訪問數據庫而不使用內容提供者?請幫忙!這裏從新應用程序訪問現有數據庫

listView.setOnItemClickListener(new OnItemClickListener() { 

     private static final int DATABASE_VERSION = 5; 
     private static final String UID = "_id"; 
     private static final String STEP = "Steps"; 
     private static final String ImagePath = "Image_Path"; 
     private static final String AudioPath = "Audio_Path"; 


     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 
      Message.message(KitchenData.this, "Click List Item Number"); 
      SQLiteDatabase db = openOrCreateDatabase("/mnt/sdcard/Kitchen_Data.db", 
        MODE_MULTI_PROCESS, null); 


      try 
      { 
String CREATE_TABLE = "CREATE Table " + li.get(position) + "("+ UID + " INTEGER PRIMARY KEY AUTOINCREMENT ," + STEP+ " VARCHAR(255) NOT NULL ,"+ImagePath+" VARCHAR(255) NOT NULL,"+AudioPath+" VARCHAR(255) NOT NULL); "; 
      db.execSQL(CREATE_TABLE); 
      pos=li.get(position); 
      }catch(SQLException e) 
      { 
       Message.message(KitchenData.this,"Errors in creating table "+e); 
      } 
+0

答案您已經嘗試了什麼?先嚐試一下。 – Signare 2015-03-31 05:53:47

+0

我編輯了這個問題。這是我創建數據庫並使用特定應用程序創建表的代碼 – 2015-03-31 05:59:07

+0

如果您期望在這些應用程序之間共享數據推薦的方式是內容提供商。 – 2015-03-31 08:00:31

回答

2
private static String DB_NAME ="YourDbName";// Database name 

DB_NAME是數據庫的名稱。假設您在資產文件夾中有一個數據庫副本,例如,如果您的數據庫名稱是mbDB,那麼DB_NAME的值將是mbDB。

private static String DB_NAME ="ordersDB"; 

將您的數據庫複製到您程序中的ASSETS文件夾中。

將下面的代碼放到您的Dbhelper類中,並在您的CreateDatabase函數中調用它。

private void copyDataBase() throws IOException 
{ 
    InputStream mInput = mContext.getAssets().open(DB_NAME); 
    String outFileName = DB_PATH + DB_NAME; 
    OutputStream mOutput = new FileOutputStream(outFileName); 
    byte[] mBuffer = new byte[1024]; 
    int mLength; 
    while ((mLength = mInput.read(mBuffer))>0) 
    { 
     mOutput.write(mBuffer, 0, mLength); 
    } 
    mOutput.flush(); 
    mOutput.close(); 
    mInput.close(); 
} 

希望這是你需要:)

+0

那意味着內容提供者不需要? – 2015-03-31 06:04:35

+0

我應該複製在相同的應用程序項目或新的應用程序項目資產文件夾中創建的數據庫? – 2015-03-31 06:10:07

+0

將已創建的數據庫複製到新的應用程序項目資產文件夾中。 – 2015-03-31 06:38:30

相關問題