2014-02-18 2 views
1

데이터베이스에 액세스하는 데 문제가 있습니다. 내 자산이 아니라 내 sdcard에 데이터베이스가 있습니다. 구성하는 방법? 이 코드를 사용할 수 있습니까?SD 카드에서 sqlite 데이터베이스를 사용하는 방법?

private void copyDataBase() throws IOException { 
InputStream myInput = context.getExternalFilesDir(DB_NAME); 
String outFileName = DB_PATH + DB_NAME; 
OutputStream myOutput = new FileOutputStream(outFileName); 
byte[] buffer = new byte[1024]; 
int length; 
while ((length = myInput.read(buffer)) > 0) { 
myOutput.write(buffer, 0, length); 
} 

내가

답변

0

SQLite는 항상에만 애플리케이션 컨텍스트에서 데이터베이스를 생성합니다이 코드를하려고 몇 가지 오류가 있습니다. 데이터베이스라는 폴더를 만들고 모든 데이터베이스를 해당 폴더에만 저장합니다. 그래서 당신은 당신의 응용 프로그램 데이터베이스에만

private void copyDataBaseFromSdCard() 
{ 
    try 
    { 
     String DB_PATH = "data/data/" + getPackageName() + "/databases/"; 
     String DB_NAME = "testcopy.db"; 

     String yourDbFileNamePresentInSDCard = "/mnt/sdcard/test.db"; 
     File file = new File(yourDbFileNamePresentInSDCard); 
     // Open your local db as the input stream 
     InputStream myInput = new FileInputStream(file); 

     // Path to created empty db 
     String outFileName = DB_PATH + DB_NAME; 

     // Opened assets database structure 
     OutputStream myOutput = new FileOutputStream(outFileName); 

     // transfer bytes from the inputfile to the outputfile 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = myInput.read(buffer)) > 0) { 
      myOutput.write(buffer, 0, length); 
     } 

     // Close the streams 
     myOutput.flush(); 
     myOutput.close(); 
     myInput.close(); 
    } 
    catch(Exception e) 
    { 

    } 
} 

    private SQLiteDatabase getDB() 
{ 
    String DB_NAME = "testcopy.db"; 
    return openOrCreateDatabase(DB_NAME, SQLiteDatabase.OPEN_READWRITE, null); 
} 
+0

오에의 sdcard에서 데이터베이스를 복사해야/데이터베이스에 코드를 복사의 test.db이 이름 testcopy.db와 폴더를 애플 리케이션입니까? 고마워요 .. – JohanIDN

+0

네, 맞아요! 데이터베이스 폴더에서만 db에 액세스해야합니다. –

관련 문제