ฉันมีแอป Android ที่ต้องการตรวจสอบว่ามีบันทึกอยู่ในฐานข้อมูลหรือไม่และหากไม่มีให้ประมวลผลบางอย่างและแทรกลงในที่สุดและอ่านข้อมูลจากฐานข้อมูลหากมีข้อมูลอยู่ ฉันใช้คลาสย่อยของ SQLiteOpenHelper เพื่อสร้างและรับอินสแตนซ์ SQLiteDatabase แบบเขียนซ้ำได้ซึ่งฉันคิดว่าจะดูแลการสร้างตารางโดยอัตโนมัติหากยังไม่มีอยู่ (เนื่องจากโค้ดที่ต้องทำนั้นอยู่ใน onCreate (... ) วิธี).
อย่างไรก็ตามเมื่อยังไม่มีตารางและเมธอดแรกที่รันบนอ็อบเจ็กต์ SQLiteDatabase ที่ฉันมีคือการเรียกไปยังเคียวรี (... ) logcat ของฉันแสดงข้อผิดพลาดของ "I / Database (26434): sqlite return: error code = 1, msg = ไม่มีตารางดังกล่าว: appdata "และแน่นอนว่าตาราง appdata ไม่ได้ถูกสร้างขึ้น
ความคิดเกี่ยวกับสาเหตุใด
ฉันกำลังมองหาวิธีทดสอบว่ามีตารางอยู่หรือไม่ (เพราะถ้าไม่มีข้อมูลก็ไม่อยู่ในนั้นอย่างแน่นอนและฉันไม่จำเป็นต้องอ่านจนกว่าจะเขียนถึงมันซึ่งดูเหมือนจะสร้างตาราง อย่างถูกต้อง) หรือวิธีตรวจสอบให้แน่ใจว่าสร้างขึ้นและว่างเปล่าทันเวลาสำหรับการเรียกครั้งแรกเพื่อสอบถาม (... )
แก้ไข
สิ่งนี้ถูกโพสต์หลังจากสองคำตอบด้านล่าง:
ฉันคิดว่าฉันอาจพบปัญหา ฉันตัดสินใจด้วยเหตุผลบางประการว่าควรสร้าง SQLiteOpenHelper ที่แตกต่างกันสำหรับแต่ละตารางแม้ว่าทั้งสองจะเข้าถึงไฟล์ฐานข้อมูลเดียวกัน ฉันคิดว่าการปรับโครงสร้างโค้ดนั้นใหม่เพื่อใช้ OpenHelper เพียงอันเดียวและการสร้างทั้งสองตารางภายใน onCreate อาจทำงานได้ดีกว่า ...