私は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 合体操作に過ぎないことに注意してください。decimal
null