Kotlin Multiplatform Academy · บทเรียน

การตั้งค่า SqlDriver ตามแพลตฟอร์ม

จัดหาไดรเวอร์ Android และ iOS ผ่าน expect/actual

บทเรียน 2 จาก 413 ขั้นตอน

การตั้งค่า SqlDriver ตามแพลตฟอร์ม เป็นบทเรียน Kotlin Multiplatform Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Multiplatform Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน

ไดรเวอร์ทำหน้าที่อะไร

SQLDelight สร้างคำสั่งค้นหาให้ แต่ต้องใช้ SqlDriver เพื่อสื่อสารกับ SQLite จริง แต่ละแพลตฟอร์มมีไดรเวอร์ของตัวเอง

เหตุใดไดรเวอร์จึงแตกต่างกัน

Android และ iOS เปิด SQLite ด้วยวิธีที่แตกต่างกัน จึงไม่มีไดรเวอร์ร่วมเพียงตัวเดียว นี่คือหน้าที่ของ expect/actual โดยตรง

ประกาศโรงงาน expect

ใน commonMain ให้ประกาศฟังก์ชัน expect ที่รับรองว่าจะส่งคืน SqlDriver โดยไม่ต้องระบุว่าแต่ละแพลตฟอร์มจะสร้างไดรเวอร์อย่างไร

expect fun driverFactory(): SqlDriver

เพิ่มการพึ่งพาไดรเวอร์ของแพลตฟอร์ม

ชุดต้นทางแต่ละชุดดึงส่วนประกอบไดรเวอร์ของตัวเองเข้ามา: ไดรเวอร์ Android ใน androidMain และ ไดรเวอร์เนทีฟ ใน iosMain

androidMain: "app.cash.sqldelight:android-driver:2.0.2"
iosMain: "app.cash.sqldelight:native-driver:2.0.2"

ไดรเวอร์ actual ของ Android

บน Android ให้สร้าง AndroidSqliteDriver โดยส่งโครงสร้างฐานข้อมูลที่สร้างขึ้นและ Context เพื่อเปิดไฟล์

actual fun driverFactory(): SqlDriver =
    AndroidSqliteDriver(AppDatabase.Schema, context, "app.db")

Context บน Android

ไดรเวอร์ Android ต้องใช้ Context ให้ส่ง application context เข้าไป เพื่อให้ฐานข้อมูลใช้งานได้ตลอดวงจรชีวิตของแอป

ไดรเวอร์ actual ของ iOS

บน iOS ให้สร้าง NativeSqliteDriver จากโครงสร้างฐานข้อมูลเดียวกัน ไม่ต้องใช้ Context เพราะไดรเวอร์จะจัดเก็บไฟล์ไว้ในพื้นที่แยกของแอป

actual fun driverFactory(): SqlDriver =
    NativeSqliteDriver(AppDatabase.Schema, "app.db")

ออบเจ็กต์โครงสร้างฐานข้อมูล

ไดรเวอร์ทั้งสองใช้ AppDatabase.Schema ซึ่ง SQLDelight สร้างจากไฟล์ .sq และจะสร้างตารางเมื่อเปิดแอปครั้งแรก

สร้างฐานข้อมูล

เมื่อมีไดรเวอร์แล้ว ให้สร้างอินสแตนซ์ฐานข้อมูล AppDatabase นี้คือจุดเริ่มต้นที่มีชนิดข้อมูลกำกับสำหรับเข้าถึงคำสั่งค้นหาทั้งหมด

val database = AppDatabase(driverFactory())

ใช้อินสแตนซ์เดียวร่วมกัน

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

ฉีดไดรเวอร์เข้าไป

ส่งไดรเวอร์เข้ามาจากแต่ละแพลตฟอร์ม แทนการกำหนดไว้ตายตัว วิธีนี้ทำให้โค้ดที่ใช้ร่วมกัน ทดสอบได้ ด้วยไดรเวอร์จำลองหรือไดรเวอร์ในหน่วยความจำ

ตรวจสอบความเข้าใจ

SQLDelight นำไดรเวอร์ฐานข้อมูลเฉพาะแพลตฟอร์มเข้าสู่โค้ดที่ใช้ร่วมกันได้อย่างไร

สรุป: เชื่อมต่อกลไกทำงาน

คุณประกาศ โรงงานไดรเวอร์ expect จัดเตรียม AndroidSqliteDriver และ NativeSqliteDriver และสร้าง AppDatabase เพียงชุดเดียว ตอนนี้คุณเรียกใช้คำสั่งค้นหาได้แล้ว ✅

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “การตั้งค่า SqlDriver ตามแพลตฟอร์ม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตั้งค่า SqlDriver ตามแพลตฟอร์ม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Multiplatform Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่า SqlDriver ตามแพลตฟอร์ม”

จัดหาไดรเวอร์ Android และ iOS ผ่าน expect/actual คุณปฏิบัติ Kotlin Multiplatform Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Multiplatform Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Multiplatform Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การตั้งค่า SqlDriver ตามแพลตฟอร์ม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kotlin Multiplatform Academy นี้ได้ไหม

ได้ บทเรียน Kotlin Multiplatform Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เพิ่ม SQLDelight และเขียนสคีมา .sq
  2. การตั้งค่า SqlDriver ตามแพลตฟอร์ม
  3. แทรก คิวรี และอัปเดตแถว
  4. สังเกตตารางเป็น Flow
← กลับไปที่ Kotlin Multiplatform Academy