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명을 입력해야 한다.

반응형