[ai]SQLite versionでif文の分岐処理をするには

久しぶりで自作ハンディーターミナルアプリを改良中

[[ai]SQLite bulk Insert 500レコード制限が無くなってる!(2019/6/11)]
[[SQLite]Bulk insert最大レコード数は約270,000行(2020/5/29)]

今開発してるのは

SQLite versionでマスターファイル名を切り替る

対象ファイル名を

(最大数500行制限撤廃後)
version3.8.8以上なら1ファイル200,000行のbulk insertファイル名を指定(新規開発)

(version 3.8.8より古い場合)
1ファイル500行(現行システム用)bulkファイル名を指定する

これが思った以上に面倒なの!

開発中のコードがこれ
1:僕のPixcel 3a(=Android10)でsqlite_versionを実行

SQLiteの返事がこれ

(sqlite_version() 3.22.0)

SQLiteのbulk Insert 最大500レコードの上限無くなったのね!Android9のSQLite versionは3.22.0

2:バージョン以外の文字列を取り除くreplaceブロックで掃除
「(sqlite_version() 3.22.0」をNULL
「)」をNULL

これでバージョン部だけになりました

3.22.0

ここからがメイン処理部「バージョン比較」

version 3.8.8より古いの?新しいの?

文字列比較では

3.8.8>3.22.0になってしまう!
文字列3.8xxxは3.2xxxより大きいから

数値比較でも

3.8>3.22になり正しく動かない

試行錯誤を繰り返し完成したコードがこれ!

versionの1桁目と2桁目を別々に保存
別々に比較する

まずversionの保存コードがこれ

メインのIF文

1桁目を比較
ver.4以上なら200000行ファイル
ver.2以下なら500行ファイル
ver.3なら2桁目を比較
2桁目が9以上なら200000行ファイル
2桁目がそれ以外なら500行ファイル

SQLite versionが
3.8以前ならファイル名:master500.zip
3.9以上ならファイル名:master200000.zip

実際のコードがこれ

全部つないだコードがこれ



動かすと

このコードをベースに、次は本アプリのソース書き換えです。
ベースプログラムがここまで完成してれば富士登山なら8合目!

ゴールは、もうすぐ!

その上でbulk insertファイル生成プログラム(ms-Access)の改造もしなければ・・・・
SQLite bulk insertファイル生成プログラム

まだまだ、やることいっぱい!

余談ですが、なぜここ数日夜な夜な熱心にプログラミングしてると思います?

答え:痛風でアルコールが飲めなくなり夜もシラフだから

痛風、痛よ!
でも、お酒飲みたいな・・・

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA