在发布这个问题之前我做了一些研究,我知道当没有返回数据时,ExecuteScalar 会抛出 System.NullReferenceException。这就是为什么我将我的存储过程修改为“返回 1”,这样就可以保证返回值。但是,我仍然收到 NULL 引用异常。
所以我尝试使用 SqlCommand 来查询一个有数据的表:
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM ATableThatHasValues", conn)
当我运行执行标量时,我能够获取一个值,因此我知道我有权查询数据库。我怀疑这是我错过的一些特定的存储过程权限设置?
我非常感谢任何评论/建议,因为我已经坚持了一天。:(
我的代码如下所示:
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;
}
}
谢谢!