私はSingleDecimalメソッドを備えたツールに直接精通していないので、一般的な意味で答えます:
ADO.NET からデータを (直接的または間接的に) クエリする場合、(おそらく両方) ある種の「リーダー」API (ほとんどのIDataReader場合) を取得するか、生のobject値を取得する可能性が高くなります。
最初のケースでは、IsDBNull(列ごとに) メソッドにアクセスできる必要があります。そのメソッドを呼び出して、ヌルでやりたいことを何でもしてください。
2 番目のケースでは、 の値を確認する必要がありDBNullますif(val is DBNull。
どちらの場合も、コードが次に何をするかはライブラリ次第です。どちらの場合も、 null に似た2 つのシナリオ (行がない場合と単一の値を持つ行)について考える必要があるかもしれません。
率直に言って、どちらの場合も、これを既にサポートしているライブラリ/ツールを使用する方が簡単です。たとえば、dapper の場合、これは次のようになります。
string customerId = "01";
decimal? pembayaran = Db.Query<decimal?>(
"Select valuta from ArInvoice where customerID=@customerId",
new { customerId }).Single();
これにより、次のことが得られます。
- 正しいパラメータ化
- null 処理
- すべてのデータをクエリするための同じ API (
Query<T>)
Single()序数 ( 、First()、ToList()など)に好きな LINQ を使用する機能
デフォルト値を使用したい場合 (decimal?セルの値が のときに空ではなく、次のnullように使用できます。
decimal pembayaran = Db.Query<decimal?>(
"Select valuta from ArInvoice where customerID=@customerId",
new { customerId }).Single() ?? 0M;
ここで、 はの代わりに?? 0Mゼロを取得するための null 合体操作に過ぎないことに注意してください。decimalnull