เริ่มต้นใช้งาน Firebase SQL Connect บน Android

ในการเริ่มต้นอย่างรวดเร็วนี้ คุณจะได้สร้างและติดตั้งใช้งานฐานข้อมูลตัวอย่างขนาดเล็ก รวมถึงเข้าถึงฐานข้อมูลจากแอป Android

ข้อกำหนดเบื้องต้น

คุณต้องมีสิ่งต่อไปนี้เพื่อทําการเริ่มต้นอย่างรวดเร็วนี้ให้เสร็จสมบูรณ์

  • สภาพแวดล้อมที่มีการติดตั้งเครื่องมือต่อไปนี้
    • Android Studio เวอร์ชันล่าสุด
    • Firebase CLI หากติดตั้ง NPM ไว้ ให้เรียกใช้คำสั่งต่อไปนี้
      npm install -g firebase-tools@latest
      หรือดูวิธีการติดตั้งในเอกสารประกอบ
  • บัญชี Google

บทแนะนำ

บทแนะนำ

1. สร้างโปรเจ็กต์ Android Studio ใหม่

ใน Android Studio ให้สร้างโปรเจ็กต์ใหม่ด้วยเทมเพลต Empty Activity

ตั้งชื่อโปรเจ็กต์ว่า Quickstart App โดยใช้ชื่อแพ็กเกจ com.example.quickstartapp

กล่องโต้ตอบโปรเจ็กต์ใหม่ของ Android Studio

2. เพิ่ม Firebase ไปยังโปรเจ็กต์ Android Studio

เพิ่มทรัพยากร Dependency ของ Firebase และปลั๊กอินการซีเรียลไลซ์ Kotlin ลงในไฟล์ build.gradle.kts

QuickstartApp/build.gradle.kts
plugins {
  alias(libs.plugins.android.application) apply false
  alias(libs.plugins.kotlin.compose) apply false

  // Add this line.
  id("com.google.gms.google-services") version "4.5.0" apply false
}
QuickstartApp/app/build.gradle.kts
plugins {
  alias(libs.plugins.android.application)
  alias(libs.plugins.kotlin.compose)

  // Add these lines.
  kotlin("plugin.serialization") version libs.versions.kotlin
  id("com.google.gms.google-services")
}

// ...

dependencies {
  // ...

  // Add these lines.
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0")
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0")

  implementation(platform("com.google.firebase:firebase-bom:34.15.0"))
  implementation("com.google.firebase:firebase-dataconnect")
}

3. เริ่มต้นโปรเจ็กต์ Firebase

เปลี่ยนไปที่ไดเรกทอรีโปรเจ็กต์ Android Studio แล้วเริ่มต้นโปรเจ็กต์ Firebase ใน ไดเรกทอรีนั้น

cd ~/QuickstartApp
firebase login --reauth
firebase init dataconnect

เมื่อได้รับแจ้ง ให้เลือกตัวเลือกต่อไปนี้

  • สร้างโปรเจ็กต์ Firebase ใหม่
  • อย่าสร้างสคีมาด้วย Gemini (ในบทแนะนำนี้ คุณจะใช้สคีมาตัวอย่างที่สร้างไว้ล่วงหน้า )
  • จัดสรรอินสแตนซ์และฐานข้อมูล Cloud SQL แบบทดลองใช้ฟรี

ยอมรับค่าเริ่มต้นสำหรับพรอมต์อื่นๆ ทั้งหมด

จากนั้นลงทะเบียนแอป Android ในโปรเจ็กต์ Firebase

firebase apps:create -a com.example.quickstartapp android android-quickstart
firebase apps:sdkconfig android -o app/google-services.json

4. ตรวจสอบตัวอย่างคำจำกัดความ GraphQL

ใน SQL Connect คุณจะกำหนดสคีมาและการดำเนินการทั้งหมดของฐานข้อมูล โดยใช้ GraphQL เมื่อเริ่มต้นโปรเจ็กต์ Firebase CLI จะสร้างคำจำกัดความตัวอย่าง เพื่อให้คุณเริ่มต้นใช้งานได้

dataconnect/schema/schema.gql (ข้อความที่ตัดตอนมา)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (ข้อความที่ตัดตอนมา)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

5. ติดตั้งใช้งานสคีมาและการดำเนินการ

เมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงสคีมา ฐานข้อมูล คำค้นหา หรือการเปลี่ยนแปลง คุณจะต้อง นําไปใช้เพื่อให้การเปลี่ยนแปลงมีผลกับฐานข้อมูล

firebase deploy --only dataconnect

6. เริ่มต้นฐานข้อมูลด้วยข้อมูลตัวอย่าง

ข้อมูลเริ่มต้นนี้จะช่วยให้คุณมีข้อมูลที่จะดูเมื่อทดสอบแอปตัวอย่าง โปรดทราบว่าในขั้นตอนนี้ คุณกำลังเรียกใช้ GraphQL ที่กำหนดเอง ซึ่งอนุญาตให้ใช้สำหรับงานด้านการดูแลระบบ

firebase dataconnect:execute dataconnect/seed_data.gql

7. สร้าง Android Client SDK

คำสั่งนี้ใช้คำจำกัดความ GraphQL เพื่อสร้าง Android Client SDK สำหรับฐานข้อมูลของคุณโดยเฉพาะ คุณใช้ไลบรารีนี้ ในแอปไคลเอ็นต์เพื่อดำเนินการกับฐานข้อมูลทั้งหมด

คุณสร้างไลบรารีสำหรับหลายแพลตฟอร์มได้ ซึ่งรวมถึง Swift สำหรับ iOS, JavaScript สำหรับเว็บ และ Flutter โดยเพิ่มคำจำกัดความลงใน connector.yaml

firebase dataconnect:sdk:generate
Android SDK ที่สร้างขึ้นโดยอัตโนมัติ (ข้อความที่ตัดตอนมา)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. เขียนไคลเอ็นต์ Android ตัวอย่าง

แทนที่เนื้อหาของ app/src/main/java/com/example/quickstartapp/MainActivity.kt ด้วย แอป Android ง่ายๆ นี้

โปรดสังเกตว่าแอปจะเข้าถึงฐานข้อมูลที่จำเป็นโดยใช้ฟังก์ชันจาก SDK ที่สร้างขึ้น

package com.example.quickstartapp

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import com.example.quickstartapp.ui.theme.QuickstartAppTheme
import com.google.firebase.dataconnect.generated.ExampleConnector
import com.google.firebase.dataconnect.generated.ListMoviesQuery
import com.google.firebase.dataconnect.generated.execute
import com.google.firebase.dataconnect.generated.instance

class MainActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
      QuickstartAppTheme() {
        Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
          var movies by remember {
            mutableStateOf(emptyList<ListMoviesQuery.Data.MoviesItem>())
          }
          LaunchedEffect(Unit) {
            // Queries need to be executed in a coroutine context
            try {
              movies = ExampleConnector.instance.listMovies.execute().data.movies
            } catch (e: Exception) {
              // TODO: Handle error, e.g., show a Toast or update a state variable to
              //   display an error message.
            }
          }
          LazyColumn(modifier = Modifier.padding(innerPadding)) {
            items(movies) { movie ->
              Text(text = movie.title)
            }
          }
        }
      }
    }
  }
}

9. ลองใช้แอป

จาก Android Studio ให้เรียกใช้แอปตัวอย่างเพื่อดูการทำงาน

ขั้นตอนถัดไป

ลองใช้ส่วนขยาย SQL Connect VS Code

เมื่อพัฒนาด้วย SQL Connect เราขอแนะนําอย่างยิ่งให้ใช้ ส่วนขยาย SQL Connect VS Code แม้ว่าคุณจะไม่ได้ใช้ Visual Studio Code เป็นสภาพแวดล้อมการพัฒนาหลัก แต่ส่วนขยายก็มีฟีเจอร์หลายอย่างที่ช่วยให้การพัฒนาสคีมาและการดำเนินการ สะดวกยิ่งขึ้น

  • เซิร์ฟเวอร์ภาษา GraphQL ที่ให้การตรวจสอบไวยากรณ์และคำแนะนำในการเติมข้อความอัตโนมัติที่เจาะจงสำหรับ SQL Connect
  • ปุ่ม CodeLens ที่อยู่บรรทัดเดียวกับโค้ดซึ่งช่วยให้คุณอ่านและเขียนข้อมูลจากไฟล์คำจำกัดความของสคีมา รวมถึงเรียกใช้การค้นหาและการเปลี่ยนแปลงจากคำจำกัดความของการดำเนินการได้
  • ซิงค์ SDK ที่สร้างขึ้นกับคำจำกัดความ GraphQL โดยอัตโนมัติ
  • การตั้งค่าโปรแกรมจำลองในเครื่องแบบง่าย
  • การนำไปใช้งานในเวอร์ชันที่ใช้งานจริงที่ง่ายขึ้น

ใช้SQL Connectโปรแกรมจำลองสำหรับ การพัฒนาภายใน

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

ดูวิธีเขียนสคีมาและ การดำเนินการสำหรับแอป

เมื่อพัฒนาแอปด้วย SQL Connect การออกแบบสคีมาและการดำเนินการ เป็นหนึ่งในงานพัฒนาแรกๆ และสำคัญที่สุดที่คุณจะต้องทำ

  • Gemini ในFirebaseคอนโซลเป็นเครื่องมือ AI ที่สร้างSQL Connectสคีมาจากคำอธิบายภาษาธรรมชาติ ของแอปได้ เครื่องมือนี้ช่วยให้คุณเริ่มต้นได้อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งหากคุณไม่เคยทำงานกับฐานข้อมูลเชิงสัมพันธ์มาก่อน
  • หรือจะเขียนสคีมาฐานข้อมูล การค้นหา และการเปลี่ยนแปลง โดยใช้ GraphQL โดยตรงก็ได้ เริ่มต้นด้วยคำแนะนำในออกแบบสคีมา SQL Connect จากนั้นไปที่หน้าติดตามเพื่อดูวิธีเขียนการดำเนินการ

ดูวิธีรับข้อมูลอัปเดตแบบเรียลไทม์จาก SQL Connect

คุณใช้ SQL Connect เพื่อเขียนแอปพลิเคชันไคลเอ็นต์ที่ตอบสนองต่อการเปลี่ยนแปลงข้อมูลแบบเรียลไทม์ได้ ดูรับข้อมูลอัปเดตแบบเรียลไทม์จาก SQL Connect