2012-08-13 2 views
0

SQLiteOpenHelper을 사용하여 내부적으로 생성 된 두 개의 테이블이있는 데이터베이스가있는 응용 프로그램을 구축 중입니다. 응용 프로그램이 실행 중일 때 일부 데이터를 수신하여 테이블에 저장합니다. 응용 프로그램이 언제든지 데이터 테이블을 지우는 것이 좋습니다. 시작 됐어?응용 프로그램을 시작할 때 안드로이드에서 SQLite 데이터베이스의 테이블을 다시 생성하는 방법을 삭제하는 방법은 무엇입니까?

나는 응용 프로그램을 사용하는 방법이 명확하지 않은이 게시물 How can I clear an SQLite database each time I start my application?을 보았다.

+0

질문이 명확하지 않습니다. 사용자가 주/실행 프로그램 '활동'을 시작할 때마다 또는 '응용 프로그램'(또는 '응용 프로그램')이 시작될 때만 DB를 지우지 않으시겠습니까? '액티비티'는 '앱'또는 '애플리케이션'이라는 일반 용어와 동일하지 않습니다. – Squonk

+0

내 응용 프로그램에 대해 하나의 활동 만 있습니다. Google Maps API를 사용하여 응용 프로그램을 작성합니다. 응용 프로그램이 시작될 때 gps 추적을 데이터베이스에 저장하려고하는데 기존 데이터베이스의 데이터를 지우고 싶습니다. – ChanChow

답변

2

SQLiteOpenHelper 인 - 메모리 데이터베이스를 을 만드는 능력이있다. 아마 이것은 당신이 찾고있는 것입니다. 예를 들어

:

SQLiteOpenHelper sqloh = new SQLiteOpenHelper(context, null, null, 1); 
SQLiteDatabase sqldb = sqloh.getWritableDatabase(); 

는 메모리 DB를 생성한다.

+0

+1 할 수 있다고 생각하지 못했습니다! – bytebender

+0

@dtmilano 예를 들어주세요. – ChanChow

1

SqliteDatabase는 openOrCreate (...) 메서드를 사용하여 데이터베이스가있는 경우 데이터베이스를 열고 존재하지 않을 때 데이터베이스를 열고 엽니 다. 매번 새로운 데이터베이스 파일을 만들 때 데이터베이스 호출을하기 전에 생성 된 데이터베이스 파일을 삭제할 수 있다는 점을 바탕으로 docs을 참조하십시오.

이것은 SO 질문은 파일의 위치를 ​​제공합니다 : Location of sqlite database on the device

있을 그냥 테이블의 데이터를 삭제하는 다른 경로 때 SQLite는 쿼리를 실행하여 응용 프로그램이 시작 :

DELETE FROM your_table 

내 응용 프로그램이 시작될 때마다 데이터베이스를 삭제하려는 경우에만 데이터베이스가 실제로 필요하다고 생각할 수 있습니다. 데이터를 업데이트하지 않으면 json 파일을 데이터로 "캐시"하지 않는 것이 좋습니다. GSON 라이브러리는 json을 가져 와서 아주 작은 코드로 java 객체로 변환하고 sqlite로 작업하는 것보다 적은 코드가 될 수 있다는 점에서 굉장합니다. 그러나 당신이 성취하려는 것을 위해 큰 그림을 가지고 있지 않아서 그 권고가 나온다. 그런 다음 db 파일 대신 응용 프로그램이 시작될 때 json 파일을 삭제하면됩니다. 당신이 생성자 nullname를 전달하는 경우

+0

이 DELETE FROM ... 문을 사용하면 자동 증가 속성이있는 기본 키가 지워지지 않습니까? 나는 그것도 지워야하고 또 하나는 내가 delete 질의를 호출해야하는 곳인가? 그것 OnCreate() 함수에 배치해야합니까? – ChanChow

+0

SQLiteOpenHelper 클래스에서 onCreate의 수명주기 란 무엇입니까? 우리가 만든 데이터베이스에 액세스하려고 할 때마다 호출 될 것인가? – ChanChow

+0

@ dtmilano는 메모리 sqlite 데이터베이스에 시도해 보았습니다 ... 간단한 해결책과 비슷합니다. – bytebender

관련 문제