2016-05-29 4 views
1

nullを回避して代わりに整数0を取得するにはどうすればよいですか?ExecuteScalarを使用してdbからMAX値を読み取り、ヌルを避ける

cmd.CommandText = "SELECT MAX(*) " + 
        "FROM [Test] " + 
        "WHERE ID = @id ;"; 

cmd.Parameters.AddWithValue("@id", ID); 
cmd.ExecuteNonQuery(); 
Amount = (int)cmd.ExecuteScalar(); 
+0

だけヌル(またはDBNull.Valueの)ためcmd.ExecuteScalarの結果を確認し、0に金額を設定しますこの場合 – Evk

+2

'SELECT MAX(*)' ??これは何であるはずですか?列名を指定する必要があります。また、ID列は通常、主キー列をマークするため、一意です。あなたのWHERE節が結果リストを0または1要素に制限するとき、 'MAX'関数を使うのは意味がありません。いくつかの基本:http://www.w3schools.com/sql/sql_func_max.asp –

+0

@QualityCatalystヒントをありがとう! – Nyprez

答えて

3

は、最初のあなたはCalculがMAX SELECT MAX(column_name)する列を指定する必要があり、これを使用することができます:

object obj = cmd.ExecuteScalar(); 

Amount = (obj != null && obj != DBNull.Value) ? Convert.ToInt32(obj) : 0 ; 
関連する問題