2015-03-31 51 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

相关问题