見出し画像

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

概略

プロパティは通常 `self.prop1` の様に使うが `_prop1` と書く事もでき、アドレス渡しが必要な場合後者の記法で `&_prop1` とするとコンパイルが通る🤤
書き方次第だが Java と SQLite の接続や SQL 実行に違いが有るので実装方法が大きく変わる事に😞

#学習記 #Objective_C
#SQLite

【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 # ヘルプ

----備忘録
(現在無し)


前回の粗筋

DB 接続は sqlite3_open() で成った🤤


DBControllerBase

コンストラクタの次は何かな🤤

Java 原本

_人人人人人人人人_
> デストラクタ <
 ̄Y^Y^Y^Y^Y^Y^ ̄


disconnect

さて、それじゃ今回も3記事を頼りながら移植してこうかね🤔

SQLiteの使用方法【Objective-C】
https://reigle.info/entry/2020/04/26/000000_3

SQLite3
http://copypaste.sakura.ne.jp/index/myApp/sqlite3/

iOSのSQLiteデータベース
https://www.w3big.com/ja/ios/ios-sqlite.html

Java では閉じれないと例外吐いたり有効性確認してから処理をしてたけど OCObjective-C は sqlite3_close の返値で判断するみたいだけど閉じれなくて困る事は無いので単純😑
あ、でも sqlite3_close はメッセージ方式じゃなく C の関数だから conn が nil だと困るかな?🤔
そこだけ排除すれば良いか🤤

ヘッダに書いたドキュメント、なんか表示の挙動がいちいち違うのが気になる😑
Discussion が黒地表示の時はセミコロンで改行されるんだけどバルーンの一部になってるとセミコロンでは改行されないってとこまでは判った🤔
ドキュメントの書き方に問題が有って崩れたり壊れても黒地の囲みになるんだけどどこかでドキュメント書式がおかしくて壊れてる…?🙄ワカラナイ


executeXxxx

原本Javaだと executeQuery と executeUpdate で別になってるんだけど OC では prepare , step , finalize の組で終わってる😑
呼び出し方が大きく違うの困るんだけど…🙄

そもそも executeQuery と executeUpdate って何の違いが有るんだっけ…🤪

JavaServlet : executeQueryとexecuteUpdateの違い
https://qiita.com/schwarz3374/items/3446dd6166fe6ef62098

executeQuery
SELECTで使う

executeUpdate
INSERT,UPDATE,DELETEなど、何も返さないSQLで使う。

ポプテピピック/竹書房

うーん…参考3記事を見る限りだと sqlite3_finalize は sqlite3_prepare で生成した statement を破棄してるのよね🤔
なので原本 executeQuery では SQL の実行結果としての ResultSet を返す様にしてて、それを呼び元で回して配列に積んでたわけなんだけど OC では prepare で生成される statement を返して処理をさせるよりこの中で配列に積んでそれを返す方が半端になってる statement も無くなるから良いかな?🤔

そうなると statement を参照できる旨味はゼロ🙄
DB の接続だけ維持して SQL ホイ投げで実行結果を得る、が正義になるかな🤔

public から外して local へ🤤

………🤔
この方法、よく見るとクラスメンバーだけどプロパティ的な参照にならないのよね確か🤔
ダメじゃないけどインスタンスにならない場合困るからちゃんとプロパティ化しておくべきよね🤤

この形にすれば打鍵数は増えるけど原本と同じ様に self.file , self.state の記述で通るから移植作業としてはそっちのが認識阻害要素が減って良さそうなのでこっちで🤤

ひとまず返値を見なくて良い update の移植してて statement の渡し方でふと思ったのよ🤔
self.state って書き方、 OC 2.0 では _state って書き方が許されたなって思って試したら前回だめだった & のアドレス渡しが通った🤪
前回のもこの形に書き換えて一時受け取り変数削除だわ🤤

結局ちゃんと動かなくて元に戻す可能性も有りそうだけど一旦これで😑

この状態で1つずつ取り出せるらしいけど纏めて取り出せたりしないんだろうかね?🙄
まぁそこは次回調べるぽ🤤


次回は

1行の取り込み部分作るっぽ🤤

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