WebI.KzdLib.SQLite 0.9.2

WebI.KzdLib.SQLite

WebI.KzTools の入出力レイヤー Kouteizu.IO.StorageIO を SQLite ファイル形式に拡張するアドオンライブラリです。.sqlite ファイルから KZDataSet (工程's の各テーブル) を読み書きできます。

インストール

dotnet add package WebI.KzdLib.SQLite

依存: WebI.KzTools (4.7.x 以降、StorageIOFactory.Register を持つもの) と Microsoft.Data.Sqlite (6.0.x)。ターゲットは net472

クイックスタート

A. 拡張子で自動ディスパッチさせる (推奨)

アプリ起動時に 1 回だけ Register() を呼べば、以降 cmd.LoadDocument("foo.sqlite") / cmd.SaveDocument("foo.sqlite") が SQLite を自動認識します。

using Kouteizu.Network;
using Kouteizu.NetworkCommand;
using WebI.KzdLib.SQLite;

// アプリ起動時に 1 回
SqliteStorageRegistration.Register();

// 以降は標準 API のまま
var doc = new KZDocument();
var cmd = new KZCommand(doc);

cmd.SaveDocument(@"C:\data\project.sqlite");
cmd.LoadDocument(@"C:\data\project.sqlite");

B. StorageIO を直接渡す

KZCommand.LoadDocument2 / SaveDocument2SqliteStorageIO を直接渡すこともできます (Register 不要)。

using Kouteizu.IO;
using Kouteizu.NetworkCommand;

var io = new SqliteStorageIO();
var cmd = new KZCommand(new KZDocument());

cmd.SaveDocument2(io, @"C:\data\project.sqlite");
cmd.LoadDocument2(io, @"C:\data\project.sqlite");

動作仕様

  • LoadDataSet(filePath, ds)ds の各 DataTable に対し、SQLite 同名テーブルから SELECT * FROM "<tableName>" の結果を DataTable.Load で流し込む。SQLite に存在しないテーブルはスキップする (KZDataSet 全テーブルが揃っていなくても落ちない)。
  • SaveDataSet(filePath, ds) — 各テーブルに対して DROP TABLE IF EXISTSCREATE TABLE → 全行 INSERT をトランザクション内で実行する。
  • SaveFolder(...) — 非対応 (NotSupportedException)。

型マッピング

DataColumn.DataType SQLite 型 備考
bool, byte, short, int, long, sbyte, ushort, uint, ulong INTEGER bool は 0/1
float, double, decimal REAL
string, Guid TEXT
DateTime, DateTimeOffset, TimeSpan TEXT ISO 8601 / round-trip 形式
byte[] BLOB
その他 (UPString 等) TEXT value.ToString() でシリアライズ、復元は単一引数 string コンストラクタを反射呼び出し

AllowDBNull == false の列には NOT NULL 制約が付き、DataTable.PrimaryKeyPRIMARY KEY 句として CREATE TABLE に反映されます。

詳細な仕様 (KZDataSet の 79 テーブルのスキーマ・列定義・ラウンドトリップ保証) は本リポジトリの docs/schema.md を参照してください。

Encoding

SQLite は内部的に UTF-8 固定なので、レジストリ KZD_ENCODING_IS_ACP の設定は影響しません。CSV/KZD と異なり、エンコーディング指定は無視されます。

制限事項

  • SaveDataSet は常に DROP & CREATE です。差分更新や UPSERT は行いません
  • SQLite のスキーマと DataSet のスキーマが不一致の状態で LoadDataSet を呼ぶと、DataTable.Load の挙動 (列名一致でマップ) に従います
  • SaveFolder (KZD/CSV の export 系) は意味を持たないため非対応

ライセンス

Web I Laboratories Inc. (Internal use)

No packages depend on WebI.KzdLib.SQLite.

.NET Framework 4.7.2

Version Downloads Last updated
0.9.2 2 05/25/2026
0.9.1 2 05/25/2026
0.1.0 2 05/25/2026