この質問を投稿する前にいくつかの調査を行いましたが、データが返されない場合、ExecuteScalar が System.NullReferenceException をスローするという事実を認識しています。そのため、ストアド プロシージャを「return 1」に変更して、戻り値が保証されるようにしました。ただし、まだ NULL 参照例外が発生しています。
そこで、SqlCommand を使用して、データを持つテーブルをクエリしようとしました。
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM ATableThatHasValues", conn)
execute scalar を実行すると、値を取得できたので、データベースにクエリを実行する権限があることがわかりました。これは、私が見逃した特定のストアド プロシージャのアクセス許可設定であると思われますか?
私はこれで1日立ち往生しているので、コメント/提案を本当に感謝しています. :(
私のコードは次のようになります。
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand("GetSomeValue", sqlConnection))
{
sqlCommand.CommandType = CommandType.StoredProcedure;
//sqlCommand.Parameters.Add(new SqlParameter("@Id", this.ID));
//sqlCommand.Parameters.Add(new SqlParameter("@State", 1 /* active */));
byte retValue = (byte)sqlCommand.ExecuteScalar();
return retValue;
}
}
ありがとう!