2017-10-03 1 views
0

장치 디스크에 db 파일 (SQLite)을 만들려고합니다. 예외없이 모두 잘 작동합니다. 파일은 생성되지 않습니다.장치의 db 파일 (특정 경로의 db 파일) (코드 첨부)

는 이러한 권한을

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

을 추가하는 코드 :

public class DbHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "myAppDatabase.db";     

private static final String PersistenceFolder = Environment.getExternalStorageDirectory() + File.separator + "MyApp" + File.separator; 
private static final String PersistenceFilePath = PersistenceFolder + DATABASE_NAME; 


public DbHandler(Context context) { 
    super(context, PersistenceFilePath, null, DATABASE_VERSION); 
} 



@Override 
public void onCreate(SQLiteDatabase db) { 

    createTable1(); 
    createTable2(); 
} 

private void createTable1(){ 
    // create table 1 with no exception 
} 

private void createTable2(){ 
    // create table 2 with no exception 
} 
} 
+0

SQLiteOpenHelper를 확장 DB를 만드는 방법? 여기서 외부 저장소와 관련하여 사용되지 않는 코드가 많습니다. 내부 저장소에 데이터베이스가 생성됩니다. – CommonsWare

+0

생성자에서 정의한 폴더에 파일이 표시되지 않습니다. – Yanshof

+0

파일이 생성되지 않았 음을 ** 정확하게 ** ** 설명하십시오. 데스크톱 파일 관리자를 사용하고 있습니까? 장치 파일 관리자를 사용하고 있습니까? 'adb ​​쉘 '을 사용하고 있습니까? 다른 뭔가를 사용하고 있습니까? – CommonsWare

답변

1

좋아, 우리는 내부 스토리지를 사용하지 않을 경우 나는 SD 카드가있는 경우 아래의 코드는 결정이 간단하게 할 수 있지만 경로를 가져옵니다 DB를 생성 한 DBHelper에 그 PATH를 전달합니다. 먼저 PATH를 얻고 코드를 게시합니다. DBHelper 코드

public void onAvail() { 

    String state = Environment.getExternalStorageState(); 

    if (state.equals(Environment.MEDIA_MOUNTED) && (!state.equals(Environment.MEDIA_MOUNTED_READ_ONLY))) { 

     File removable = ContextCompat.getExternalFilesDirs(this, null)[1]; 
     THE_PATH = String.valueOf(removable) + "/Documents/"; 

     //System.out.println("ALL TRUE ==> " + THE_PATH); 

    } else {// if (state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { 
     THE_PATH = ""; 
     //System.out.println("ALL FALSE ==> "+ THE_PATH); 
    } 
} 

부분 DBHelper 코드는 파일이 생성되지 않는 것으로 확인 방법

공용 클래스 DBHelper는 {

public static final String DB_NAME = THE_PATH +"PassWord"; 
//public static final String DB_NAME = "PassWord"; 
// Code Above for Internal Storage ONLY 
public static final Integer DB_VERSION = 1;