Android - 경로를 지정하여 SQLite 생성
2163 단어 오보 모음집
전언
오늘 맏형이 만들어진 데이터베이스 저장 경로를SD로 바꾸라고 했어요. 자신감 넘치고 낮게 고쳐서 결과가 붕괴됐어요. 여기에 기록해 주세요.
본문
우리가 데이터베이스를 만드는 것은 일반적으로 SQLiteHelper를 통합하여 DB 를 구성하는 것이다NAME가 들어오면 데이터/data/database/에서 기본적으로 생성되며, 안에 있는 파일도 상대적으로 안전하며, 앱을 삭제할 때도 함께 삭제됩니다.하지만 서로 다른 수요 상황에 직면하게 된다.그리고 오늘 나는 작은 구덩이에 누웠다.
OpenOrcreate Database (...) 를 쉽게 찾을 수 있는 방법을 찾았습니다. 지정한 경로 아래에서 만들 수 있습니다. SQLiteHelper 자체도 그를 호출할 수 있습니다. 경로를 죽도록 썼을 뿐입니다.
그리고 나서 나는 시도해 보았다.
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/AAA/aaa.db";
SQLiteDatabasemDb = SQLiteDatabase.openOrCreateDatabase(path ,null);
기쁨으로 가득 차서 결국, 아이고, 잘못 보고했다.
SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
그러고 보니 권한이 없었다.수동 익살
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
결과는 역시 같은 잘못을 보고했다.
벽 밖을 뒤집어 보니 이렇게 해서 성공했다.
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/AAA";
File pathFile = new File(path);
File file = new File(path+"/aa.db");
try{
if(!pathFile.exists()){
pathFile.mkdirs();
}
if(!file.exists()){
file.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
mDb = SQLiteDatabase.openOrCreateDatabase(file,null);
즉, OpenOrcreate Database를 호출할 때 이 경로에 파일이 존재하지 않을 때 기본적으로 만들어주지 않기 때문에 데이터베이스를 열 수 없습니다. 이 데이터베이스가 없기 때문에 수동으로 파일을 만들면 문제가 없습니다.