내 Android 앱에 SQLite 데이터베이스와 콘텐츠 공급자가 있습니다. 이 콘텐츠 제공자는 앱의 AndroidManifest.xml
에 등록되어 있습니다. 내 보낸 앱이 아니기 때문에 내 앱에서만 볼 수 있습니다.콘텐츠 공급자를 사용할 때 데이터베이스 다시 만들기
사용자 프로필을 재설정하는 과정에서이 데이터베이스를 완전히 지우고 처음부터 다시 만들고 싶습니다. 처음에는 활동의 컨텍스트에서 deleteDatabase()
으로 전화를 걸었습니다. 이 기능은 앱이 종료 된 후 다시 열리는 경우에만 작동합니다. 그렇지 않으면 데이터베이스가 읽기 전용이라는 행을 삽입하려고하면 충돌이 발생합니다. 제 이해는 deleteDatabase()
에 전화하기 전에 연결을 먼저 닫아야한다는 것입니다. 그러나 연결은 콘텐츠 공급자가 관리하므로 내가 이해하는 한 수동으로 닫지 않아야합니다.
대신 ContentResolver
의 call()
메서드를 사용하여 테이블의 모든 데이터를 삭제하고 시퀀스 수를 수동으로 재설정하는 사용자 지정 함수를 호출합니다.
이 방법은 작동하지만 지금은 수동으로 각 테이블에서 데이터를 삭제해야하며 이후에 변경 한 사항을 추적해야합니다.
는ContentProvider
를 사용할 때 내
DatabaseHelper
(
SQLiteOpenHelper
) 트리거의
onCreate()
을 전체 데이터베이스를 삭제해야하는 더 좋은 방법이 있나요?
왜 모든 콘텐츠를 삭제하지 않고 다시 만들고 싶습니까? –
@DiegoTorresMilano 각 테이블/행을 삭제하지 않고 (그러므로 deleteDatabase를 호출하려고하지 않고) 새 상태로 데이터베이스를 신속하게 새로 고치려고하고 초기 설정 프로세스가 처음으로 새 프로파일을 다시 구성하게하려고한다고 가정합니다 운영. 현재 모든 데이터 행을 삭제할 예정입니다. deleteDatabase를 호출하는 것과 비슷한 기능이 있다면 궁금합니다. – Programmer001
파일이 아직 열리는 동안 삭제하려고 시도해서는 안됩니다. –