2011-02-24 3 views
3

도우미를 사용하여 새 데이터베이스를 작성 중이지만 일단 작성된 문서는 데이터베이스가 작성되었지만 제대로 호출되지 않으면 호출해야합니다. 어떤 PLZ 나를 최대한 빨리 해결할 수 있습니다. Plz 아래 코드를 참조하십시오.데이터베이스 생성 후 oncreate가 호출되지 않습니다!

1) plz가 나에게 조언한다면 헬퍼를 사용하는 대신 데이터베이스를 만드는 방법이 있습니까? 2) 데이터베이스 생성 및 데이터베이스 삭제시 콜백은 무엇이 호출 될까요?

OpenHelper(Context context) 
    { 

    super(context, "examplee.db", null, 1); 
    SQLiteDatabase sqlite = null;  
     Log.w(TAG, "Openhelp database, "); 
     sqlite = context.openOrCreateDatabase("examplee.db", Context.MODE_PRIVATE, null); 
     Log.e (TAG,"SQ lite database object "+sqlite);     
    } 

public void onOpen(SQLiteDatabase db) 
{ 
    Log.e (TAG,"On open called "); 
} 


    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     Log.w(TAG, " On create "); 
     //db.execSQL(sql); 
    //db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    { 
    Log.w(TAG, "Upgrading database, this will drop tables and recreate."); 
    //db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
    //onCreate(db); 
    } 

} 사전에

감사합니다,

답변

1

SQLiteOpenHelper의 javadoc의 데이터베이스가 처음 만들어 질 때에서 onCreate가 "라고 말한다.이 어디 테이블의 생성과 초기 인구 테이블의. " 응용 프로그램이 시작될 때마다 호출되지 않습니다. 아마도 db가 이미 생성되어있을 것입니다.

db가 adb를 사용하여 쉘에 로그인했는지 확인하고/data/data/< 응용 프로그램 패키지 이름 >/databases로 이동하여 employees.db 파일이 있는지 확인하십시오.

일반적으로 onCreate 메서드에서 테이블을 만들고 모든 초기 데이터를로드합니다. 설치 후 앱이 처음 실행될 때 실행됩니다.

+0

안녕하세요, 새 데이터베이스를 만들 위치를 알려주세요. – Prasath

0

그렇다면 plz이 나에게 조언한다면 헬퍼를 사용하는 대신 데이터베이스를 만드는 방법이 있습니까?

예는 도구 SQLite Manager 또는 기타를 사용하여 시스템에 수동으로, 데이타베이스를 작성하고 프로젝트의 당신의 assets 폴더에 그 sqlite db 파일을 묶을 수 있습니다. 그리고 응용 프로그램이 다음 실행할 때 경로 /data/data/your_app_package_name/databases/

에 해당 데이터베이스 파일을 복사해야합니다 참조이 : Using your own SQLite database in Android applications 콜백이 데이터베이스 생성과 또한 데이터베이스의 살인에 호출됩니다 무엇

?

데이터베이스가 처음 만들어 질 때 onCreate() 메서드가 호출됩니다. 그리고 kill/drop 데이터베이스에 방법이 없습니다 대신 그 db 파일을 삭제할 수 있습니다.

5

다음은 에뮬레이터에서 데이터베이스 파일을 삭제하는 방법에 대한 매우 자세한 설명입니다 (실제 Android 휴대 전화에서의 디버깅은 매우 유사합니다).

  1. 에뮬레이터를 실행하십시오. 문제가있는 경우이 도움말 메시지의 나머지 부분은 무시해도됩니다.

  2. 운영 체제에 따라 명령 줄 인터페이스를 끌어 올립니다.

  3. 'adb shell'명령을 실행하십시오 (물론 따옴표는 생략하십시오). 그러면 Android Debug Bridge로 이동합니다. 프롬프트가 간단한 파운드 기호와 같은 것으로 바뀝니다. 오리지널 운영 체제에 관계없이 이제는 단순화 된 유닉스 운영 체제를 사용하게되었습니다.

  4. 이제 에뮬레이터를 사용 중입니다. 'ls -l'명령을 입력하여 루트 디렉토리에 있는지 확인하십시오 (유닉스 루트 디렉토리 시스템과 매우 유사하게 보일 것입니다).

  5. 데이터베이스 파일이 저장된 위치로 디렉토리를 변경하십시오. 실행 한 프로그램이 com.sillynames.myprogram5 패키지에 있고 데이터베이스 파일의 이름이 'myblackbook.db'라고 가정합니다. 당신은 디렉토리에있는 파일을 찾을 수 있습니다 :

    /data/data/com.sillynames.myprogram5/databases/myblackbook.db 해당 디렉토리에 들어가면

  6. 을, 단순히 'RM myblackbook를 통해 데이터베이스를 삭제 .db '.

희망이 있습니다. -scott

관련 문제