我正在尝试执行一个存储过程,然后使用if语句来检查空值,我现在做的很短.我是一个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();
}
Run Code Online (Sandbox Code Playgroud)
这是否允许我检查SQL连接是否只返回一个值,如果是,那么填充我的字符串?
我习惯于只是检查下面的内容,看看是否正在返回一个值而不确定我是否正确使用C#
如果不是IsDBNull(rsData("usr.ursrdaystime"))
任何帮助,将不胜感激!
Kam*_*ach 100
这应该工作.
if (rsData["usr.ursrdaystime"] != System.DBNull.Value))
{
strLevel = rsData["usr.ursrdaystime"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
还需要添加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();
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将自动处理(关闭)块{...}之外的资源.
jas*_*son 10
惯用的方式是说:
if(rsData["usr.ursrdaystime"] != DBNull.Value) {
strLevel = rsData["usr.ursrdaystime"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
这个:
rsData = objCmd.ExecuteReader();
rsData.Read();
Run Code Online (Sandbox Code Playgroud)
使它看起来像你正在读取一个值.请IDbCommand.ExecuteScalar改用.
与您的 VB 最接近的等价物是(请参阅此):
Convert.IsDBNull()
Run Code Online (Sandbox Code Playgroud)
但是有很多方法可以做到这一点,大多数都从这里链接
是的,只是一个语法问题。试试这个:
if (reader["usr.ursrdaystime"] != DBNull.Value)
Run Code Online (Sandbox Code Playgroud)
.Equals()正在检查两个 Object 实例是否相同。