sqliteデータベーステーブルから選択したSystem.Data.SQLiteを使用しています列に「整数」型があり、次のような場合は'int'型のsqliteカラムから選択すると、.net intにキャストできますが、 'integer'カラムから選択できない場合
int x = (int)reader["myColumn"];
が失敗します。問題は値がnullではないことです。列はNULL可能ではありません。列のデータ型を 'int'に変更すると、正常に動作します。列の値は '2'、 '3'、 '4'などです。非常に大きなものはありません。
これが予期される動作であれば、誰でも知っていますか?
私は本当に長いx =(長い)読者["myColumn"];がうまく動作していることを発見した後、この質問に自分自身で答えることに戻っていました。あなたは絶対に正しい - それはInt64だった - だからちょうど長い変数を使用すると私のために働くだろう。 INTとINTEGERの動作が異なる理由については、それはまだ私にとって奇妙です。 INT/INTEGERからのキャストの成功/失敗をテーブル内の同じデータ値に対して繰り返すことができ、別のテーブルでも問題を再現できます。おそらく、ドライバーのわずかな矛盾。 – Rory