HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2022/04/17

Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠 Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠

(SQLDelightを Androidで使う方法)

Tags: [Android開発]




● Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠

 SQLDelightを Androidで使う方法

SQLDelight - Getting Started on Android
 公式の手順だとエラーしか出ない罠。

SQLDelight
 Version 1.5.3 (2021-11-23)

.\settings.gradle
pluginManagement {
    // SQLDelight
    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == 'com.squareup') {
                useModule('com.squareup.sqldelight:gradle-plugin:+')
            }
        }
    }
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
...

.\app\build.gradle
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'

    // SQLDelight
    id 'com.squareup.sqldelight'
}

...


// SQLDelight
// archivesBaseName = 'sample-common'

// SQLDelight
sqldelight {
    HockeyDb {
        packageName = "com.example.testsqldelight"
    }
    linkSqlite = true
}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    // SQLDelight
    // https://cashapp.github.io/sqldelight/android_sqlite/
    implementation "com.squareup.sqldelight:android-driver:1.5.3"


.\app\src\main\sqldelight\com\example\testsqldelight\Player.sq
/**
 * hockeyPlayer table define
 */
CREATE TABLE hockeyPlayer (
  player_number INTEGER NOT NULL,
  full_name TEXT NOT NULL
);

/**
 * Initialize hockeyPlayer table at install application
 */
CREATE INDEX hockeyPlayer_full_name ON hockeyPlayer(full_name);

INSERT INTO hockeyPlayer (player_number, full_name)
VALUES (15, 'Ryan Getzlaf');

/**
 * SQL
 */
selectAll:
SELECT *
FROM hockeyPlayer;

insert:
INSERT INTO hockeyPlayer(player_number, full_name)
VALUES (?, ?);

update:
UPDATE hockeyPlayer
SET full_name = :full_name
WHERE player_number = :player_number;

insertOrReplace:
INSERT OR REPLACE INTO hockeyPlayer(player_number, full_name)
VALUES (?, ?);

insertFullPlayerObject:
INSERT INTO hockeyPlayer(player_number, full_name)
VALUES ?;

deleteAll:
DELETE
FROM hockeyPlayer;

.\app\src\main\java\com\example\testsqldelight\MainActivity.kt
package com.example.testsqldelight

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.squareup.sqldelight.android.AndroidSqliteDriver
import com.squareup.sqldelight.db.SqlDriver

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val driver: SqlDriver = AndroidSqliteDriver(HockeyDb.Schema, applicationContext, "test.db")

        // In reality the database and driver above should be created a single time
        // and passed around using your favourite dependency injection/service
        // locator/singleton pattern.
        val database = HockeyDb(driver)

        val playerQueries: PlayerQueries = database.playerQueries

        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())
        // Prints [HockeyPlayer(15, "Ryan Getzlaf")]

        playerQueries.insert(player_number = 10, full_name = "Corey Perry")
        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())
        // Prints [HockeyPlayer(15, "Ryan Getzlaf"), HockeyPlayer(10, "Corey Perry")]

        val player = HockeyPlayer(10, "Ronald McDonald")
        playerQueries.insertFullPlayerObject(player)
        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())

        playerQueries.update(player_number = 15, full_name = "update")
        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())

        playerQueries.insertOrReplace(player_number = 10, full_name = "insertOrReplace")
        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())

        playerQueries.update(player_number = 10, full_name = "update 10")
        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())

        playerQueries.deleteAll()
        Log.e("SQLDelight", playerQueries.selectAll().executeAsList().toString())
    }
}

2022-04-17 20:11:43.698 23557-23557/com.example.testsqldelight E/SQLDelight: [HockeyPlayer [
      player_number: 15
      full_name: Ryan Getzlaf
    ]]
2022-04-17 20:11:43.711 23557-23557/com.example.testsqldelight E/SQLDelight: [HockeyPlayer [
      player_number: 15
      full_name: Ryan Getzlaf
    ], HockeyPlayer [
      player_number: 10
      full_name: Corey Perry
    ]]
2022-04-17 20:11:43.725 23557-23557/com.example.testsqldelight E/SQLDelight: [HockeyPlayer [
      player_number: 15
      full_name: Ryan Getzlaf
    ], HockeyPlayer [
      player_number: 10
      full_name: Corey Perry
    ], HockeyPlayer [
      player_number: 10
      full_name: Ronald McDonald
    ]]
2022-04-17 20:11:43.738 23557-23557/com.example.testsqldelight E/SQLDelight: [HockeyPlayer [
      player_number: 15
      full_name: update
    ], HockeyPlayer [
      player_number: 10
      full_name: Corey Perry
    ], HockeyPlayer [
      player_number: 10
      full_name: Ronald McDonald
    ]]
2022-04-17 20:11:43.749 23557-23557/com.example.testsqldelight E/SQLDelight: [HockeyPlayer [
      player_number: 15
      full_name: update
    ], HockeyPlayer [
      player_number: 10
      full_name: Corey Perry
    ], HockeyPlayer [
      player_number: 10
      full_name: Ronald McDonald
    ], HockeyPlayer [
      player_number: 10
      full_name: insertOrReplace
    ]]
2022-04-17 20:11:43.764 23557-23557/com.example.testsqldelight E/SQLDelight: [HockeyPlayer [
      player_number: 15
      full_name: update
    ], HockeyPlayer [
      player_number: 10
      full_name: update 10
    ], HockeyPlayer [
      player_number: 10
      full_name: update 10
    ], HockeyPlayer [
      player_number: 10
      full_name: update 10
    ]]
2022-04-17 20:11:43.778 23557-23557/com.example.testsqldelight E/SQLDelight: []



Tags: [Android開発]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法
Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法

  Twitter4Jの Java ラッパでまるっと取得!ユーザーアカウントでのログインが必要

Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法
Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法

  Twitter Kit for Androidでまるっと取得!ユーザーアカウントでのログイン不要

.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

ちいかわの単行本を買ってみた!もちろん特装版!
ちいかわの単行本を買ってみた!もちろん特装版!

  特装版のカルタが怖いと話題のちいかわ単行本。

すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ
すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ

  すみっコぐらしshop東京駅店 東京キャラクターストリート 東京駅一番街に行ってみた

【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】
【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】

  【全買占め】「鬼滅の刃」ブームに乗っかって鬼滅のお菓子を根こそぎ買い占め、これは戦争だ【在庫滅殺】

【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】
【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】

  【レムは俺の嫁】レムが主役のアニメ、リゼロ【エミリアは脇役】

テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー
テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー

  ごちうさのスペシャル フィギュア チノ リゼ シャロを買ったのでレビュー、UFOキャッチャー景品




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/android/android_database_sqldelight/