Tôi đang phát triển một ứng dụng Android. Nó có nhiều chủ đề đọc và ghi vào cơ sở dữ liệu SQLite của Android. Tôi nhận được lỗi sau:Cách tránh lỗi khóa SQLiteException
SQLiteException: error code 5: database is locked
Tôi hiểu SQLite khóa toàn bộ db trên chèn/cập nhật, nhưng các lỗi này chỉ dường như xảy ra khi chèn/cập nhật trong khi tôi đang chạy một truy vấn chọn. Truy vấn chọn trả về một con trỏ đang được mở khá một đống (một vài giây một vài lần) trong khi tôi lặp lại nó. Nếu truy vấn chọn không chạy, tôi sẽ không bao giờ lấy được khóa. Tôi ngạc nhiên rằng lựa chọn có thể khóa db. Điều này có thể, hoặc là cái gì khác đang xảy ra?
Cách tốt nhất để tránh các khóa như vậy là gì?
Bạn nói để lại con trỏ mở trong một thời gian. Tôi tin rằng tôi có cùng một vấn đề, nhưng con trỏ của tôi đang được duy trì bởi một listView. Bạn đã bao giờ quản lý để sửa lỗi này? – taer
Có, tôi đã sửa lỗi này bằng cách đọc nội dung của con trỏ ngay lập tức vào một bộ sưu tập, đóng con trỏ và sau đó itterate trên bộ sưu tập để làm việc tốn thời gian. Nếu bạn đang sử dụng một listView, bạn sẽ có thể làm như vậy và sử dụng một ArrayAdapter hoặc viết adapter của riêng bạn mở rộng ArrayAdapter. – TheArchedOne
http://stackoverflow.com/questions/7657223/sqlite-exception-database-is-locked-issue/9503044#9503044 – junto