我正在尝试执行一个存储过程,然后使用if语句检查null值,但我遇到了问题。我是一个VB的家伙,所以如果我犯了一个学生语法错误,请容忍我。
objConn = new SqlConnection(strConnection);
objConn.Open();
objCmd = new SqlCommand(strSQL, objConn);
rsData = objCmd.ExecuteReader();
rsData.Read();
if (!(rsData["usr.ursrdaystime"].Equals(System.DBNull.Value)))
{
strLevel = rsData["usr.ursrdaystime"].ToString();
}这是否允许我检查SQL连接是否只返回一个值,如果是,则填充我的字符串?
我习惯于只检查下面的代码来查看是否返回了一个值,并且不确定我是否正确地使用了C#
如果不是IsDBNull(rsData("usr.ursrdaystime"))
任何帮助都将不胜感激!
发布于 2012-05-03 20:57:49
这应该是可行的。
if (rsData["usr.ursrdaystime"] != System.DBNull.Value))
{
strLevel = rsData["usr.ursrdaystime"].ToString();
}还需要添加using语句,如下所示:
using (var objConn = new SqlConnection(strConnection))
{
objConn.Open();
using (var objCmd = new SqlCommand(strSQL, objConn))
{
using (var rsData = objCmd.ExecuteReader())
{
while (rsData.Read())
{
if (rsData["usr.ursrdaystime"] != System.DBNull.Value)
{
strLevel = rsData["usr.ursrdaystime"].ToString();
}
}
}
}
}这将自动释放(关闭)块{ ..}。
发布于 2012-05-03 20:58:02
习惯用法是这样说的:
if(rsData["usr.ursrdaystime"] != DBNull.Value) {
strLevel = rsData["usr.ursrdaystime"].ToString();
}这一点:
rsData = objCmd.ExecuteReader();
rsData.Read();使其看起来就像是在读取一个值。请改用IDbCommand.ExecuteScalar。
发布于 2012-05-03 21:03:17
与VB最接近的等价物是(see this):
Convert.IsDBNull()但是有许多方法可以做到这一点,而且大多数都是链接的from here
https://stackoverflow.com/questions/10431835
复制相似问题