見出し画像

【Console Application】ファイルとデータベース【学習記】

ファイルとかデータベースの話🤤

Q.
結局 DB 接続は具体的に判ってない…?
A.
結局 DB 接続は具体的に判ってない…😞

→ Kotlin + SQLite はやり方が出てこない(または何か混在)
→ Java での方法は出てくるので jar を Kotlin で使えば解決?
→ Swift はそういうライブラリが有るっぽい
→ OC はかなり原始的なやりかたっぽく既存の .dylib を叩くだけの方式かも
 → system() 使用もやむなし?

#学習記 #SQLite
#Kotlin #Java #Swift #Objective_C


ファイルとか DBデータベース とか

ファイルやって DB かなって思ったんだけど、欲張りセットで同時進行しようかな🤪
課題とかでどうせ住所録やるだろうから独自の DB を作ろうね🤤

題して

_人人人人人_
> ランプ <
> 管理DB <
 ̄Y^Y^Y^Y^ ̄


どんな機能を作るのか

こんな予定🤤

・コマンドライン
・ csv を指定して DB を更新する
・ csv はバッチ情報の代わり
・ csv に DB の内容を出力できる

これによりファイルと DB を一変にやろうって腹積もり🤪
コマンドラインにして本当は入力を付けたら「コンソール入力も学習できるね!」だったんだろうけど helloWorld で名前入れてねを付けちゃったし独自 readLine 作っちゃったくらいなので入力機能自体省略🤤


作るに当たって行う省略

・レコード情報などは専用で汎用性はゼロ
・当然拡張性もゼロ
・その分、工期を短縮(できるといいな🤪

いつも作る時は「どうせなら使いそうなもの、後でも使えそう」なのをこしらえるけど型判別の時同様、完全に学習用に「簡素」に作るのを課題に組み込んでおこうと思う🤤


そもそも「ランプ」って?

音ゲーのクリアマークの事🤤
今はスコアやランプを管理するためのサイトはあちこちあるので完全にイマサラなんだけど DB 学習素材として連絡帳以外で簡素な造りのネタって割と少ないのよね🙄
まぁ、単純にネタ扱いなので参考にするために見に来た人が「いいやおれは連絡帳で作る!」っていうのは誰も止めない🤤


仕様

レコード
・レベル : 1-12
・難易度 : b,n,h,a,l
・曲名
・ランプ : -,x,a,e,c,h,e,f

オプションスイッチ
-u file.csv # 更新(略値)
 ファイル名だけ指定した場合更新処理と見做す
-d file.csv # 削除
-p # csv 出力(略値)
 何も指定せずに起動した場合出力処理と見做す
-v # バージョン
-h # ヘルプ


各言語の DB 接続

まず手元の教材 Kotlin から。
やり方は載っているけど果たして一般的な物なのか判らないので調査して同じである事をまず確認しようかな🤤

SQLite
https://www.db.soc.i.kyoto-u.ac.jp/lec/le4db/?SQLite

Javaプログラムから関係データベースを操作する場合、対応するJDBCドライバが必要です。

Kotlin での方法を探してて先に Java が見つかる等🙄
まぁいいんだけどw
とりあえずこの jdbc ドライバとやらを落としとこ🤤

Android の話ばっかで邪魔だなこれ…😞
今、 Android での話はしてないのよ…(そのうちやるだろうけど

この jdbc をそのまま Kotlin で使えって事なのかな…?🤔
手元の学習のでも jdbc 云々とある。でもやり方がこの jar を落としてくるのではないのよね…🙄ドユコト?

………

検索で出てくるハンズオンとかいう本が似た様な事をしているけど本の一部しか出てないのでこれだけだと作成が進まない😞

もう教則のままやっちゃお。こんなとこで時間使ってもしょうがない😞
そうすると Swift とかかなり不安だなぁ🙄

SQLite.swift でSQLiteを操作する
https://qiita.com/ao2-y/items/1483c95e16dea0629127

不安虚しく、とても導入しやすいシロモノだった模様🙄
じゃぁ残った OCObjective-C は…

【Objective-C】sqliteデータベースファイルをXcodeプロジェクトに埋め込む方法
https://qiita.com/yu_okb/items/00484d9a0c4f73643c52

Objective-C でデータベースファイル(SQLite)を操作する
https://rakuishi.com/archives/4543/

埋め込みやスマホアプリ用の話…🤤
そのうち使う可能性のある話だけど今はこれじゃない…😞

オブジェクトCのSQLとOOP
https://jpndev.com/post/912326

なんか機械翻訳が検索にかかるようになって凄い探しにくいけど悪くはなくなってきたのかな?🤔
FMDB とかいうのを調べれば良いんだろうか?🙄

C++からSQLite3を使ってみる。
https://seraphy.hatenablog.com/entry/20061031/p1

windows では dll が有ってあれこれできるようだけど mac はそこまでこなれてないから似た様な事できるか怪しい…
というか mac は標準でコマンドラインから使えるので究極的には NSTask とか system() とか exec() とか…🤪
一応もうちょっと探そうかな…🙄

………

FMDB とやらも結局 iOS で使う為のナニガシカでコマンドラインツールで使えるやつを呼ぶ様なモノでは無いっぽい🙄

objective-cを使用してsqlite __NSArrayI、NSArrayMからデータを取得する際に問題が発生する
http://ja.uwenku.com/question/p-wkicgwrr-mx.html

DBManager だって?🤔

iOS 用の話とかしか出てこない😞

なんか↑の「Objective-C でデータベースファイル(SQLite)を操作する」の方法見てるとヘッダを取り込んで独自のクラスを生成してるから windows でソースから .lib 作って .h 取り込んで、とやってる事が一緒っぽい🤔
という事はそもそも .h が有るのかな、きっと🤤


次回は

余り良くないけど DB 部分を後で作る事にして SELECT や UPDATE を投げるとこまで作っちゃってから DB 接続テストする感じになるかな🤔
これ、技術的にできないって判ったらプロジェクト破綻するやり方だからほんとはダメなのよね😞
でも SQL を投げる、という挙動については接続できようができまいが書かなければならない部分なので DB 操作だけ後回しでも成り立つといえば成り立つ筈🤔
OC や Swift は OS が最初から持ってるから最悪コマンドラインを中から呼べばできちゃうわけだし🤪

この記事が気に入ったらサポートをしてみませんか?