・2022/04/17
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のユーザー タイムラインを丸っと取得する方法
Twitter4Jの Java ラッパでまるっと取得!ユーザーアカウントでのログインが必要
Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法
Twitter Kit for Androidでまるっと取得!ユーザーアカウントでのログイン不要
.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
まるっと取得したかった!質問は受け付けない!
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
まるっと取得したかった!質問は受け付けない!
ちいかわの単行本を買ってみた!もちろん特装版!
特装版のカルタが怖いと話題のちいかわ単行本。
すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ
すみっコぐらしshop東京駅店 東京キャラクターストリート 東京駅一番街に行ってみた
【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】
【全買占め】「鬼滅の刃」ブームに乗っかって鬼滅のお菓子を根こそぎ買い占め、これは戦争だ【在庫滅殺】
【我が道を】遂にガチの食玩にも手を出してしまった。。。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/