【Console Application】ファイルとデータベース 266【学習記】
概略
プロパティは通常 `self.prop1` の様に使うが `_prop1` と書く事もでき、アドレス渡しが必要な場合後者の記法で `&_prop1` とするとコンパイルが通る🤤
書き方次第だが Java と SQLite の接続や SQL 実行に違いが有るので実装方法が大きく変わる事に😞
前回の粗筋
DB 接続は sqlite3_open() で成った🤤
DBControllerBase
コンストラクタの次は何かな🤤
_人人人人人人人人_
> デストラクタ <
 ̄Y^Y^Y^Y^Y^Y^ ̄
disconnect
さて、それじゃ今回も3記事を頼りながら移植してこうかね🤔
Java では閉じれないと例外吐いたり有効性確認してから処理をしてたけど OC は sqlite3_close の返値で判断するみたいだけど閉じれなくて困る事は無いので単純😑
あ、でも sqlite3_close はメッセージ方式じゃなく C の関数だから conn が nil だと困るかな?🤔
そこだけ排除すれば良いか🤤
ヘッダに書いたドキュメント、なんか表示の挙動がいちいち違うのが気になる😑
Discussion が黒地表示の時はセミコロンで改行されるんだけどバルーンの一部になってるとセミコロンでは改行されないってとこまでは判った🤔
ドキュメントの書き方に問題が有って崩れたり壊れても黒地の囲みになるんだけどどこかでドキュメント書式がおかしくて壊れてる…?🙄
executeXxxx
原本だと executeQuery と executeUpdate で別になってるんだけど OC では prepare , step , finalize の組で終わってる😑
呼び出し方が大きく違うの困るんだけど…🙄
そもそも executeQuery と executeUpdate って何の違いが有るんだっけ…🤪
うーん…参考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行の取り込み部分作るっぽ🤤
この記事が気に入ったらサポートをしてみませんか?