Tôi có một ứng dụng android cần kiểm tra xem đã có bản ghi trong cơ sở dữ liệu chưa và nếu chưa, hãy xử lý một số thứ và cuối cùng chèn nó và chỉ cần đọc dữ liệu từ cơ sở dữ liệu nếu dữ liệu tồn tại. Tôi đang sử dụng một lớp con của SQLiteOpenHelper để tạo và nhận một phiên bản SQLiteDatabase có thể ghi lại được, mà tôi nghĩ rằng nó sẽ tự động xử lý việc tạo bảng nếu nó chưa tồn tại (vì mã để làm điều đó nằm trong onCreate (... ) phương pháp).
Tuy nhiên, khi bảng KHÔNG tồn tại và phương pháp đầu tiên chạy trên đối tượng SQLiteDatabase mà tôi có là lệnh gọi truy vấn (...), logcat của tôi hiển thị lỗi "I / Database (26434): sqlite return: error code = 1, msg = no such table: appdata ", và chắc chắn, bảng appdata không được tạo.
Bất kỳ ý tưởng về lý do tại sao?
Tôi đang tìm một phương pháp để kiểm tra xem bảng có tồn tại hay không (bởi vì nếu không, dữ liệu chắc chắn không có trong đó và tôi không cần đọc nó cho đến khi tôi ghi vào nó, điều này dường như tạo ra bảng đúng cách), hoặc một cách để đảm bảo rằng nó được tạo và chỉ trống, trong thời gian cho lệnh gọi truy vấn đầu tiên (...)
CHỈNH SỬA
Điều này được đăng sau hai câu trả lời bên dưới:
Tôi nghĩ rằng tôi có thể đã tìm ra vấn đề. Vì một số lý do, tôi đã quyết định rằng một SQLiteOpenHelper khác được cho là phải được tạo cho mỗi bảng, mặc dù cả hai đều truy cập vào cùng một tệp cơ sở dữ liệu. Tôi nghĩ rằng cấu trúc lại mã đó để chỉ sử dụng một OpenHelper và tạo cả hai bảng bên trong nó onCreate có thể hoạt động tốt hơn ...