2013-07-02 3 views
0

데이터를 로깅하고 SQL을 통해 .db 파일로 저장하는 앱을 작성했습니다. 내부 메모리에서 SD 카드로 복사하는 방법이있었습니다.SD 카드에서 db 파일로 안드로이드 작동

이제이 특정 .db 파일을 사용해야하는 두 번째 앱을 작성했습니다. 내가 생각하는 것처럼, 그 애플리케이션은 내가 SD 카드에 내 DB 작업을 어떻게 든 필요 (이 경우

/data/data/app1_package/databases/my_database.db 

에) 다른 응용 프로그램

에서 파일을 패키지에 액세스 할 수 없습니다. 어떻게해야합니까?

SQLiteHelper 클래스에서이 경로를 사용할 수 있습니까? SD에서 패키지로 복사해야합니까 (액세스 권한 등)?

저는 데이터베이스 초보자입니다. 도움이 될 것입니다.

답변

0

예 자산 폴더에 DB 파일을 배치하고이 방법으로 얻을 :에

 DB_PATH="/data/data/app1_package/databases/my_database.db" 

당신의 생성 :

  is = getAssets().open("Meaniningss.db"); 
      write(is); 

방법 :

   public void write(InputStream is) { 
    try { 
     OutputStream out = new FileOutputStream(new File(DB_PATH)); 
     int read = 0; 
     byte[] bytes = new byte[1024]; 

     while ((read = is.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 
     is.close(); 
     out.flush(); 
     out.close(); 
     System.err.println(out + "\n"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

사용자가 내 첫 번째 앱을 가지고 있으며 db 파일에서 내 앱을 독립적으로 작성합니다. 그래서 나는 그것의 장치에 내 두 번째 응용 프로그램에 DB 파일을 얻는 방법이 필요합니다. 자산 방법은 내가 두 번째 응용 프로그램을 작성하는 동안 DB 파일을 얻는 것 같습니다. 나는이 권리가있는 걸까? – Tommy

1

당신은 열 수를 데이터베이스로 읽을 수있는 파일 경로 :

File dbFile = new File(Environment.getExternalStorageDirectory(), "myfile.db"); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile,null,null); 

참고 :이 코드를 사용하기 전에 sd-card가 마운트되어 있는지 확인하십시오.

+0

좋아요. 첫 번째 앱에는 2 개의 수업이 있습니다. SQLHelper (데이터베이스를 만들고 SD에 저장) 및 SQLDatabase (SQL 지침을 수행). 헬퍼 클래스를 삭제하고 내가 말한 것처럼 만든 db 파일로 작업 할 수 있습니까? 각각의 목적을 위해서만 도우미 클래스가 필요합니까? – Tommy

+0

@Tommy'SQLieHelper'는 데이터베이스를 열고 create/upgrade 메소드를 호출합니다. 이 두 코드를 직접 코딩 할 수 있다면 'SQLiteOpenHelper'없이 작업 할 수 있습니다. –

+0

내가 어떻게하는지 힌트를 줄 수 있니? 난이 db 물건에 정말 새로운거야 – Tommy

관련 문제