前提・実現したいこと
C#のプログラムでSQLiteのREAL型のカラムへDouble.MinValueをそのまま保存&取得したいです。
発生している問題
C#でINSERTした場合、PupSQLite等で確認すると-∞として格納されていることがあります。
該当のソースコード
C#
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 CreateDB(); 6 } 7 8 static void CreateDB() 9 { 10 var dbFilePath = Environment.CurrentDirectory + "\test.sqlite"; 11 if(File.Exists(dbFilePath)) 12 { 13 try 14 { 15 using (var con = new SqliteConnection($@"Data Source={dbFilePath}")) 16 { 17 con.Open(); 18 con.Execute($@" 19INSERT INTO user (id, name, value1) SELECT 1 , 'user1', @value1 ; 20INSERT INTO user (id, name, value1) SELECT 2 , 'user2', {Double.MinValue}; 21INSERT INTO user (id, name, value1) SELECT 3 , 'user3', -1.7976931348623157E+308 ; 22" , param: new{ value1 = Double.MinValue }); 23 } 24 } 25 catch (Exception e) 26 { 27 Console.WriteLine(e); 28 throw; 29 } 30 } 31 } 32 }
試したこと
VisualStudio2019で.NET Core3.1のプロジェクトとして作成しソースコードの内容を実行しました。
PupSQLiteでテーブルを確認した際は以下の結果が格納されていました。
id(INTEGER) | name(TEXT) | value1(REAL) |
---|---|---|
1 | user1 | -1.7976931348623157E+308 |
2 | user2 | -∞ |
3 | user3 | -∞ |
補足情報(FW/ツールのバージョンなど)
Nuget
名称 | バージョン |
---|---|
Dapper | v2.0.35 |
Microsoft.Data.SQLite | v3.1.5 |
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。