使用 Npgsql 傳遞空值如下所示:using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn)){ cmd.Parameters.Add(new NpgsqlParameter("TEST", NpgsqlDbType.Varchar)); cmd.Parameters[0].Value = DBNull.Value; cmd.ExecuteNonQuery();}哪個(gè)工作正常。新的 Npgsql 4.0 文檔建議使用強(qiáng)數(shù)據(jù)類型聲明參數(shù),如下所示:using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn)){ cmd.Parameters.Add(new NpgsqlParameter<string>("TEST", NpgsqlDbType.Varchar)); cmd.Parameters[0].Value = DBNull.Value; cmd.ExecuteNonQuery();}當(dāng)傳遞 DBNull.Value 時(shí),會(huì)拋出一般異常:無法將“System.DBNull”類型的對(duì)象轉(zhuǎn)換為“System.String”類型。一切仍然適用于新的無裝箱參數(shù),但新語法似乎有意義,我們想使用它……但是如何解決這種數(shù)據(jù)類型斷開連接的問題?上面的例子是一個(gè)字符串。我認(rèn)為這也會(huì)影響數(shù)字和日期。
Npgsql 4.0 參數(shù)和空值
慕運(yùn)維8079593
2021-10-24 20:35:47