정말 내 애플 리케이션에서 SqlLite를 사용하여 고군분투하고있다; 내 앱이 좀 XML을 파싱하고 시작하면안드로이드 SQLite 어디서 언제 SQLiteOpenHelper 초기화
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE myTestTable (Id INTEGER PRIMARY KEY , "
+ "info TEXT," +
+ "TopLeft TEXT")); <-- example insert
}
: 나는 약 6 테이블을 작성하고있는 한 OnCreate에서 SQLiteOpenHelper
에서public class DatabaseHelper extends SQLiteOpenHelper {
를 확장하는 데이터베이스 헬퍼 클래스를 설정 한
테이블에 데이터를 입력하고 데이터베이스를 점검하고 거기에 모든 것이 있고 테이블이 올바르게 작성되었습니다.
데이터를 호출하려고하면 사라집니다! dbhelper 클래스와 각 액티비티 내에서 여러 가지 다른 쿼리가 있는데 클래스를 초기화하여 클래스 내 함수를 가져올 수 있습니다.
내 oncreate를 다시 실행하고 모든 테이블을 지우는 방법으로이 방법을 사용하지 않는 것으로 가정합니다. (또는 적어도 이것은 데이터를 호출 한 후에 DB를 확인하는 것처럼 보입니다. 그것과 내가 한 OnCreate 한 번만 실행 한 인상이었다
! 빈,하지만 내 DB 매번를 다시 내 데이터를 닦는 것으로 보인다 이것은 분명히 사실이 아니다! 당신이 의미
dbhelper 클래스를 초기화하고 테이블을 다시 만드는 것을 어떻게 멈추게합니까? 응용 프로그램이 닫히더라도 데이터가 지속되어야합니다!
나는 혼란스러워!
이것이 이해가되지 않는다면 명확하게 설명 할 수있는 구체적인 질문을하십시오.
UPDATE
나는
테이블을 재 작성을 중지CREATE TABLE IF NOT EXISTS
을 추가 할 수 있습니다 발견,하지만 여전히 .. 오른쪽에서 OnCreate 때마다 호출하지 않는 것
좋은 질문 나는 누군가가 지금까지 당신은하지만 "삽입"데이터베이스를 닫기 전에 성공적인 트랜잭션을 표시하는 등, 해답을 제공 희망? –
클래스를 정적으로 선언하면 문제가 해결됩니까? –
@DAVE G 모든 데이터가 확실히 DB에 들어갑니다. 삽입 후에 DB를 닫으려고합니까? 현재 수행 중 : \t SQLiteDatabase db = this.getWritableDatabase(); .... 모든 데이터를한데 모으고 : db.insert ("TABLENAME", null, cv); ... 그리고 그게 끝이야?! – Bex