見出し画像

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

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

Q.
ResultSet を null 許容?
A.
Java では null を入れておいてコンストラクタでは特にいじってないのよね🤔
でも null 安全にしてしまったらどこかで初期化しないとならないし放置してると怒られる…なら Java と同じで null が入ってくる前提に戻しちゃえばいいんじゃない?ってやりくち🤤

→大丈夫なのかと思ってた DB 接続は基本的に Java のままで大丈夫らしい…これが Java の資産も使える Kotlin の強み!…なのかな🤤

#学習記 #Kotlin

【Console Application】ファイルとデータベース【学習記】
仕様
https://note.com/sayka/n/nb8a67fa90a64?magazine_key=m7bb64c6a359f#br1mB

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

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

----備忘録
Java の main 側の AnalyzeArgs.arguments は String[] にして av.arguments 渡すだけ
status も忘れずに


デバグ

DB のとこ直すぽ🤤

で、どこがおかしいのん?🙄

件の文言を吐く場所は1箇所しかなかった🤤
それじゃこの try 内を探ろうかな🤔

ステップして気付いたけどこの34行目、何してるのん…?🤔

クラスClass<T>
forName
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Class.html#forName-java.lang.String-

ははぁ、 Java ではこれで文字列のクラスを作成させて使えないとかの問題が起きると catch されて使える様なら素通りになるっていうやりくちなのね🤔
Kotlin でも同じで通ってるから大丈夫…なのかな…一応調べとこ🙄

Record のクラス名からクラスオブジェクトを取得する処理でも同じ書式なので同じ効果が得られる事が確認できたので素通りではなく検査として機能してる、でヨシ🤤
つまりクラスは作れたけど他で失敗してる、と😞
null 安全によるヘマかパスの失敗か、多分どっちか🙄

SQLiteConfig までは大丈夫😑
パスとかがヘマってればここ38行目で catch される…🤔

connection ヨシ🙄

statement 作成よーし😑

resultSet 代入でシボンヌ😞
これ確か null 安全化した時に resultSet どうすんのってあれこれやった記憶が有るんだけど…🙄

まぁ、直接何の例外来たのか見れば良っかな🤤

JDBC 「statement が実行されてないぞ🤬」
うーん… statement を何かしら実行しないとそんなものは取れないぞって言ってるのかなこれは😞
Java の元ソースでは勿論 this.result に代入なんてのはやってないのよね🙄
null 初期化で定義して statement が変更される事が分かる時だけ入れてるって格好😞

まぁこれの解法は存在するのかもしれないけど ResultSet は null 許容で Java に合わせてしまうのが一番早いかなと思う😞
late init でも初期化したか調べる為にフラグ作ってもそれって null チェックじゃん?っていうオチだからその方が簡単🙄

後は関連してるとこが有れば null チェック噛ますだけかな🤤


Java だとこの後の while でぬるぽって catch されるんだけど Kotlin は許容のままだと怒るので手で例外を投げる必要が有るのがめんどい😞

null 許容にした影響かな?🤔
IntelliJ が何かわめいてるけど次回でいいや😞


次回は

null がお嫌いの様なので安全化運動するぽ🤤

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