Android
안드로이드 - SQLite 백업, 복원 방법 (데이터베이스 백업, 복원)
남자두부 2015. 2. 19. 13:11반응형
1
매니페스트에 퍼미션을 선언해준다.
1
2
3
4
5 |
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/> |
cs |
2
저장 메소드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
File BackupDir = new File(sd, "TEST폴더");
BackupDir.mkdir();
File currentDB =
new File(data, "//data//project.test//databases//TEST.db");
File backupDB = new File(sd, "TEST폴더/TEST_BACKUP.db");
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getApplicationContext(),
"저장 OK", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"저장 Fail", Toast.LENGTH_SHORT).show();
} |
cs |
3
복원 메소드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
File backupDB =
new File(data, ""//data//project.test//databases//TEST.db");
File currentDB = new File(sd, "TEST폴더/TEST_BACKUP.db");
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getApplicationContext(),
"복원 OK", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"복원 Fail", Toast.LENGTH_SHORT).show();
} |
cs |
*
1
2 |
File BackupDir = new File(sd, "TEST폴더");
BackupDir.mkdir(); |
cs |
위 소스를 제거하면 폴더 없이 저장된다.
대신 File(sd, "TEST폴더/TEST_BACKUP.db");을 File(sd, "TEST_BACKUP.db"); 이렇게 바꿔주어야 한다.
주의
File backupDB에 들어가는 패키지를 주의할 것(매니페스트에 있는 패키지명을 입력해야된다.)
마지막 TEST.DB는 데이터베이스에 있는 DB명을 입력해야 한다.
반응형