3

多くの動的データに基づいて新しい Sqlite データベースを作成する C# コードに取り組んでおり、新しいデータが入ってくるために列を作成または変更する必要があるかどうかを判断しようとしている部分に行き詰まっています。

DataTable を取得し、DataColumn のデータ型とサイズを確認してテーブルを処理する既存の方法は、新しいテーブルを作成するこのプロセスでは機能しないようです。これまでのすべての状況では、DataColumn.DataType は常に System.Object であるためです。テーブルの作成に使用された正しいタイプ (サイズ 128 の文字列など) が取り込まれます。次の行に沿った非常に単純なコードで取得されます...

IDbCommand cmd = new SQLiteCommand("SELECT * FROM Table", connection);
reader = cmd.ExecuteReader ();
dt.Load (reader);

入力された単一の列を含む行を手動で追加すると、出来上がりです! サイズ128の文字列を正しく返します。追加した行のデータではなく、データベース スキーマ (検出長 128) を使用しているため、空のテーブルでは機能しないのはなぜですか?

誰かが提案できる回避策はありますか?

4

1 に答える 1

1

SQLite は動的型付けを使用するため、テーブルを作成するときに特定のデータ型を使用する必要はありません。(同じ列で別の型の値を取得できるため、クエリの列型を読み取ることはあまり意味がありません。)

于 2013-10-02T21:39:22.453 に答える