บทนำเกี่ยวกับฐานข้อมูล 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 ดูแลการอัปเดตการลบการแทรกการสอบถามและการปิดและเปิดการดำเนินการฐานข้อมูลด้วยความช่วยเหลือของออบเจ็กต์
มีคำถามสำหรับเรา? พูดถึงพวกเขาในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป
กระทู้ที่เกี่ยวข้อง:
วิธีใช้ฉากสาธารณะ