見出し画像

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

概略

sqlite3.dylib を取り込むのはもう古いらしい🙄
sqlite3.tbd を取り込むのが最新☝️
但し `@import SQLite3;` という記述は OC++ ではエラーとなるので従来の `#import <sqlite3.h>` という記述になるっぽい🤤
sqlite3ext.h というヘッダも存在していて役割が良くわからないがこのヘッダ名で調べて出てくる記事を見る限りでは特に説明も無く使われてるので @ 式の記述ができない OC++ ではおまじない的にこのヘッダも取り込んでおいても良いかも🤔

#学習記 #Objective_C
#import #dylib #tbd #SQLite3


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

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


前回の粗筋

独自配列クラスにブラケットアクセスを付加する実装方法で短い文字数での使用が可能になり平和が訪れた🤤


DBControllerBase

DB 接続部分の実装へ戻ってきたお🙄
このファイルとデータベースを始めた辺りで一度調べた記憶は有るけど「できそうだな、ヨシ🤪」で済ませちゃった気がするので改めて調べる事にするぽ🤤


確かヘッダが既に有って

前回は確かできる事だけを確認してそれ以上詳しく調べなかったんだけど今回は「できるだけ新しい記事」から見る様にするぽ🤔
Xcode は更新の度に切り捨てたり仕様が大きく変わったりが激しいので古い記事を見てると「もうそんな方法では実装できない」っていうのが当たり前のように出てきちゃうのよね🙄
これが Windows になると無いわけじゃないんだけど互換性が高いとか非推奨だけど残ってたりなんだけど…😞
まぁそういう取捨選択をバッサリやるからこそ 68K → PPC → Intel → Apple silicon という OS 駆動 CPU の変更を可能としてきたんだと思うけど😑

パっと見で出てくるのは2020年付近の記事が恐らく最新かな?🤔
それ以降は Swift でどうぞって事だろうねぃ😞

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

なんで題名もタグも Objective-C なのに Swift のライブラリの話をしてるんだろ…🙄❓❓❓

◾️SQLiteのインポート
ソースコードを記載する前に、「Linked Frameworks and Libraries」に「libsqlite3.0.tbd」を追加する必要がある。

以前調べた時は dylib とヘッダを引き込む話だったんだけど Swift 用ライブラリを持ってきて OCObjective-C で使う話をしてるんだろうか?🤔
というかこの「◾️」、絵文字の方の四角じゃんよ🙄◾️■◾️■◾️■

【Objective-C】FMDBの利用方法
https://qiita.com/Howasuto/items/69e338555e6445802f5b

前回調べてた時にも出てきた "FMDB" 😑
ダメじゃないんだけど可能なら標準のままやりたいのよね🤔
Java の場合は DB の操作事態は標準が有るんだけどエンジンに選択肢が多いので接続の時に使いたいエンジンの jar を持ってきて個別に接続する方式☝️
OC の場合は、 MacOS に標準で SQLite が入ってる関係で dylibWin で言う DLL が入ってて開発用にヘッダが有る、という状態だった筈なんだけど…それが書かれてる記事が古いのしか無い…?🙄

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

libsqlite3.dylibを追加する。
・libsqlite3.dylib
Xcodeを開いた最初の画面からTargets -> Biild Phasesと選択していく。link Binary with Librariesを開き+ボタンを押してlibsqlite3.dylibを追加します。

ほらほらこういうのこういうの🙄
しかしこれはヘッダ…というか import 文について触れられていない😞

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

ここでは <sqlite3.h> になってるから libsqlite3.dylib を追加してヘッダ指定で行ける…かな🤤
二重引用符ではなく山括弧指定なので用意されてる手合のヘッダの筈😑


ライブラリ

ええと…?

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

libsqlite3.dylibを追加する。
・libsqlite3.dylib
Xcodeを開いた最初の画面からTargets -> Biild Phasesと選択していく。link Binary with Librariesを開き+ボタンを押してlibsqlite3.dylibを追加します。

………🤔
libsqlite3.dylib について書かれてる記事は古い物が多い😑
そして2020年の記事のは .tbd が出てきて .dylib ではない…て事は .tbd が新しいリンクライブラリ…?🙄

フレームワークがdylibからtbdへ
https://electronicstars.hatenablog.com/entry/2015/10/30/191706

どうやらtbd拡張子のファイルはテキストファイルのようでdylibファイルをロードするためのものらしい。

………🤔
林檎社の真意は判らないけど、個人的にはこれは「将来 dylib という拡張子は使わなくなるかも」もしくは「 Unix 系の so も混在させたい」という物ではないかなと思う🤤
ライブラリの名前は判ってるけれど、古来より MacOS で使われてきた dylib と、互換性が生まれた事により可能となった Unix 系のビルド生成物の so どちらか良くわからない、または混在の場合、橋渡しで取り込める仕組みを作っておくと以降のバイナリの拡張子は特に考えずに橋渡しのファイルの記述内容をいじるだけに変わる、という事?知らんけど🤪
そうすると最初に見つけた tbd での話をしている記事を見つつ進めると同じになる…のかな?🤤

"TARGETS/General/Framework and Libraries" から追加したらそこには表示されないでファイルの方に Frameworks フォルダが現れて追加されたお😑ヨクワカラン

………😑
そう、このプロジェクト OC じゃなく実は OC++ なのよね🙄
なので C 前提の OC モジュール群は OC++ ではダメって言われてるのはまぁ分かる😞

エラー Use of '@import' when modules are disabled
https://ja.stackoverflow.com/questions/23288/エラー-use-of-import-when-modules-are-disabled

多分、ここで先に見つけたヘッダでの import の書き方をすれば通るんじゃないのかしら🤔

import で sql まで打鍵したところで sqlite3ext.h というのが出てきたので調べてみたんだけど特に説明もなく import するのが当たり前みたいな記事しか出てこないお😞
そういうとこだぞ、開発者界隈!🤬
OC での使用で特に説明は出てこないのだけど古い記事では sqlite3.dylib + `#import <sqlite3.h>` で新しめの記事だと sqlite3.0.tbd + `@import SQLite3;` なので念の為両方のヘッダを書いておこうかなという感じ😑
役割が分かって要らない事が判明したら削除だと思うけど今はこの状態にしとこうかな🤤


次回は

接続部分に入れるかな?🤔
今回調べて出てきたサイトを見ながら書いてく🤤

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