บทนำเกี่ยวกับฐานข้อมูล Android SQLite



บล็อกนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับฐานข้อมูล Android SQLite

บทนำเกี่ยวกับฐานข้อมูล Android SQLite

ฐานข้อมูล Android SQLite ต้องการหน่วยความจำน้อยมาก (ประมาณ 250kb) ซึ่งมีอยู่ในอุปกรณ์ Android ทั้งหมด อุปกรณ์ทุกเครื่องมีการรองรับฐานข้อมูล SQLite ในตัวซึ่งได้รับการจัดการโดยอัตโนมัติบน Android ตั้งแต่การสร้างการดำเนินการไปจนถึงการสืบค้นกระบวนการ





SQLite เป็นฐานข้อมูลโอเพ่นซอร์สที่มีอยู่ในทุกฐานข้อมูล Android รองรับคุณสมบัติฐานข้อมูลความสัมพันธ์มาตรฐานเช่นไวยากรณ์ SQL ธุรกรรมและคำสั่ง SQL SQLite เป็นฐานข้อมูล SQL เวอร์ชันที่เบากว่าซึ่งคำสั่ง SQL ส่วนใหญ่ไม่ทำงานบนฐานข้อมูล SQLite เมื่อ SQLite เข้าที่แล้วสิ่งสำคัญคือต้องตรวจสอบให้แน่ใจว่าคุณลักษณะหรือคำสั่งพร้อมใช้งานใน SQLite เท่านั้นจึงจะสามารถดำเนินการได้

ข้อดีพื้นฐานของ SQLite:



  • เป็นฐานข้อมูลน้ำหนักเบา
  • ต้องใช้หน่วยความจำน้อยมาก
  • ฐานข้อมูลที่มีการจัดการโดยอัตโนมัติ

SQLite รองรับ Datatypes 3 แบบเท่านั้น:

  • ข้อความ (เช่นสตริง) - สำหรับจัดเก็บประเภทข้อมูล
  • จำนวนเต็ม (เช่น int) - สำหรับจัดเก็บคีย์หลักจำนวนเต็ม
  • จริง (เช่นสองครั้ง) - สำหรับการจัดเก็บค่าแบบยาว

โดยทั่วไป SQLite ไม่ได้ตรวจสอบประเภทข้อมูลด้วยตัวเอง กล่าวอีกนัยหนึ่งไม่ว่าจะใช้ประเภทข้อมูลใดก็ตามจะเรียกว่าถูกต้อง

ตัวอย่างเช่นในกรณีนี้มีการพูดถึงฐานข้อมูลของผู้ให้บริการเคเบิล ที่นี่มีการเพิ่มตารางใหม่โดยมี 'ข้อความ' ในช่องชื่อและช่องชื่อช่องที่มี 'ช่องข้อความ' สร้างประเภทข้อมูลค่าแบบสุ่มแล้ว ผลลัพธ์สุดท้ายคือตารางทดสอบที่มีประเภทข้อมูลที่ไม่ถูกต้องซึ่งแสดงว่า SQLite ไม่ได้ตรวจสอบความถูกต้องของประเภทข้อมูล



* สามารถค้นหาฐานข้อมูลได้โดยคลิกที่แพ็คเกจและเข้าถึงโฟลเดอร์ข้อมูลไปยังโฟลเดอร์ฐานข้อมูลซึ่งมีไฟล์

หมายเหตุ: คลาส SQLiteOpen Helper ใช้เพื่อจัดการการสร้างฐานข้อมูลและการจัดการเวอร์ชัน

คำถามของผู้ใช้:

การเปลี่ยนแปลงในผลลัพธ์เวอร์ชัน db คือการเปลี่ยนแปลงเวอร์ชัน SQLite ของอ็อบเจ็กต์หรือไม่

ไม่มีการเปลี่ยนแปลงในเวอร์ชัน SQLite ของอ็อบเจ็กต์เนื่องจากการจัดการสร้าง / อัปเดตฐานข้อมูลหนึ่งการจัดการและอีกรายการกำลังเล่นกับข้อมูลที่เก็บไว้ในตารางของฐานข้อมูล จึงไม่มีการพึ่งพาเลย

theano เทียบกับ tensorflow กับ keras

กลับมาเมื่อเราขยายคลาส SQLiteopenHelper เราจะเขียนทับเมธอด Oncreate & OnUpgrade ในคลาสนี้ เมื่อเข้าถึงฐานข้อมูล SQLite อาจทำงานช้าในบางครั้งขึ้นอยู่กับความซับซ้อนของแบบสอบถาม ขอแนะนำให้ตรวจสอบให้แน่ใจว่าได้หลีกเลี่ยงผลกระทบน้อยที่สุดหรือแบบสอบถามที่ทำงานในการเรียกซ้ำเมื่อเรียกใช้แบบสอบถาม SQL นอกจากนี้ยังเป็นแนะนำให้ดำเนินการฐานข้อมูลพร้อมกันวิธีการเหล่านี้ได้รับการจัดการโดยอัตโนมัติหรือเรียกโดยเฟรมเวิร์ก นอกจากนี้ต้องสังเกตด้วยว่าเมื่อใดก็ตามที่มีการเพิ่มเวอร์ชัน DB จะเรียก onUpgrade โดยอัตโนมัติ

เมื่อใดก็ตามที่มีคนพูดถึงคลาส SQLite open helper ชื่อและเวอร์ชันของฐานข้อมูลจะถูกส่งไปในตัวสร้างของคลาสเพิ่มเติม

ที่นี่จะต้องคำนึงถึงสองสิ่ง:

  • เรียกเมธอด OnCreate () หากไม่มีฐานข้อมูล
  • เรียกเมธอด OnUpgrade () หากมีการอัพเดตเวอร์ชันฐานข้อมูล

คลาส SQLite open helper ให้ชื่อและเวอร์ชันในคอนสตรัคเตอร์ getwriteabledatabase () ถูกเรียกและถ้าไม่มีฐานข้อมูลก็จะ OnCreate หากในกรณีฐานข้อมูลมีอยู่และเวอร์ชันที่อัปเดตจะเรียก OnUpgrade ()

วิธีการเหล่านี้อยู่ใน firstcall ของ db หรือไม่?

ให้เราเป็นตัวอย่าง เมื่อเราติดตั้งแอปพลิเคชันมันจะสร้าง OnCreate และวิธีการ apk จะถูกอัปโหลดไปยัง Google play store เมื่อดาวน์โหลด apk เวอร์ชันล่าสุดแล้วระบบจะตรวจสอบฐานข้อมูลที่ติดตั้งไว้แล้ว หากมีเวอร์ชันที่สูงกว่าจะเรียกการอัปเกรดหากไม่เป็นเช่นนั้นก็จะไม่ทำอะไรเลย

คำถามของผู้ใช้

จำเป็นต้องได้รับอนุญาตจากผู้ใช้ในการอัพเกรดเวอร์ชันฐานข้อมูลหรือไม่?

ไม่ไม่จำเป็นต้องได้รับอนุญาตเนื่องจากเรากำลังดำเนินการเกี่ยวกับทรัพยากรแอปพลิเคชันจึงไม่ต้องขออนุญาต

คำถามของผู้ใช้

หาก user1 ได้ติดตั้งแอปพลิเคชันของฉันและเป็นเวอร์ชันที่อัปเกรดสำหรับ DB และต่อมา user2 กำลังติดตั้งแอปพลิเคชันใหม่และ user1 กำลังอัปเกรดแอป ในสถานการณ์เช่นนี้หากมีการเรียกใช้ user1 ในการอัปเกรดเวอร์ชันและสำหรับวิธีการสร้าง user2 นั้นเป็นวิธีการทั้งหมดจาก android หรือไม่?

ใช่เนื่องจากเราไม่ได้ติดตั้งเวอร์ชันใด ๆ ลงในอุปกรณ์ ไม่เป็นไรตราบใดที่ยังไม่มีการติดตั้งเวอร์ชันก่อนหน้าลงในอุปกรณ์ มันเหมือนกับการจัดการเฟรมเวิร์กมาก

คำถามของผู้ใช้

เราสามารถมีวัตถุฐานข้อมูล SQLite ได้หรือไม่? จะเกิดอะไรขึ้นถ้าชื่อฐานข้อมูลของฉันมีขัดแย้งด้วยวัตถุชื่อ db อื่น?

ไม่สำคัญเพราะฐานข้อมูลอยู่ในชื่อแพ็กเกจของแอปพลิเคชันซึ่งไม่ควรขัดแย้งกันแม้ว่าจะสร้างโฟลเดอร์ย่อยในชื่อเดียวกันแล้วก็ตาม มีความสำคัญในระดับรูทเท่านั้นและการจัดการระดับรูททำได้ด้วยความช่วยเหลือของชื่อแพ็กเกจ ต้องสังเกตว่าเราไม่สามารถมีสองแอปพลิเคชันที่มีชื่อแพ็กเกจเดียวกันได้ แต่เราสามารถมีชื่อฐานข้อมูลที่แตกต่างกันได้ 2 ชื่อภายใต้แพ็กเกจที่แตกต่างกัน ฐานข้อมูล SQLite ดูแลการอัปเดตการลบการแทรกการสอบถามและการปิดและเปิดการดำเนินการฐานข้อมูลด้วยความช่วยเหลือของออบเจ็กต์

มีคำถามสำหรับเรา? พูดถึงพวกเขาในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป

กระทู้ที่เกี่ยวข้อง:

วิธีใช้ฉากสาธารณะ