2014-07-08 2 views
0

이전 기사에서 SQLiteDatabse의 단일 인스턴스를 만든 다음 내 App 전체에서 참조하는 방법이 있습니다. 내 데이터베이스가 어디에 있는지 알려주지 못합니다. 데이터베이스가 SDCard에 쓰여졌 기 때문에 어느 데이터베이스에 올바르게 사용해야하는지 알려줄 수있는 방법이 있어야합니다. 여기에 코드를 다음과 같습니다 :Android SQLite 데이터베이스 도우미 인스턴스

public class DatabaseManager { 

    private int mOpenCounter; 

    private static DatabaseManager instance; 
    private static SQLiteOpenHelper mDatabaseHelper; 
    private SQLiteDatabase mDatabase; 

    public static synchronized void initializeInstance(SQLiteOpenHelper helper) { 
     if (instance == null) { 
      instance = new DatabaseManager(); 
      mDatabaseHelper = helper; 
     } 
    } 

    public static synchronized DatabaseManager getInstance() { 
     if (instance == null) { 
      throw new IllegalStateException(DatabaseManager.class.getSimpleName() + 
        " is not initialized, call initializeInstance(..) method first."); 
     } 

     return instance; 
    } 

    public synchronized SQLiteDatabase openDatabase() { 
     mOpenCounter++; 
     if(mOpenCounter == 1) { 
      // Opening new database 
      mDatabase = mDatabaseHelper.getWritableDatabase(); 
     } 
     return mDatabase; 
    } 

    public synchronized void closeDatabase() { 
     mOpenCounter--; 
     if(mOpenCounter == 0) { 
      // Closing database 
      mDatabase.close(); 

     } 
    } 

} 

내 실제 데이터베이스는 사용자가 명시 적으로 데이터베이스의 경로를 언급 할 필요가 없습니다 FooBase.db

static File directoryPath = new File(Environment.getExternalStorageDirectory().toString() + "/MyApp/database"); 

답변

0

라고합니다. 위치의 기본 저장소 자신의 데이터베이스 (들)에 의해

모든 안드로이드 애플 리케이션 /data/data/packageName/

SQLiteOpenHelper - creating database on SD card

How to store sqlite database directly on sdcard

Docs

+0

는 있지만,이 경우에는 데이터베이스가 될 것입니다 감사 적어도 13MB 이상이 필요했기 때문에 다른 파일과 함께 SDCard에 파일을 작성하여 충분한 공간이 있는지 확인하고자했습니다. 앱. 그래서 그걸로, 나는 여전히 위의 –

+0

을 추가로 지정해야하며, 여전히 어떤 데이터베이스를 열 것인지를 알려주는 방법이 있어야합니다. 네가 많은 분이라면? –

+0

Ok ... 이제는 다른 답변으로 곧 답변을 업데이트하겠습니다. – SMR

관련 문제