我试图执行一个存储过程,然后使用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();
}
这是否让我检查SQL连接是否只返回一个值,如果是的话我的填充字符串?
我已经习惯了能够只是检查下,看是否返回的值,而不是知道我在用C#做正确
如果不IsDBNull以便(rsData( “usr.ursrdaystime”))
任何帮助,将不胜感激!
这应该工作。
if (rsData["usr.ursrdaystime"] != System.DBNull.Value))
{
strLevel = rsData["usr.ursrdaystime"].ToString();
}
还需要使用语句添加,像波纹管:
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();
}
}
}
}
}
这会全自动处理块{..}之外(关闭)的资源。
惯用的说法是:
if(rsData["usr.ursrdaystime"] != DBNull.Value) {
strLevel = rsData["usr.ursrdaystime"].ToString();
}
这个:
rsData = objCmd.ExecuteReader();
rsData.Read();
使它看起来像你正在阅读一个值。 使用IDbCommand.ExecuteScalar
代替。
是的,只是一个语法问题。 试试这个:
if (reader["usr.ursrdaystime"] != DBNull.Value)
.Equals()
被检查是否两个Object实例是相同的 。
考虑:
if(rsData.Read()) {
int index = rsData.GetOrdinal("columnName"); // I expect, just "ursrdaystime"
if(rsData.IsDBNull(index)) {
// is a null
} else {
// access the value via any of the rsData.Get*(index) methods
}
} else {
// no row returned
}
此外,您也需要更多的using
,P
if(!rsData.IsDBNull(rsData.GetOrdinal("usr.ursrdaystime")))
{
strLevel = rsData.GetString("usr.ursrdaystime");
}
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.isdbnull.aspx
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getordinal.aspx
我用String.IsNullorEmpty频繁。 因为当为DBNull设置为的ToString返回空,将工作她。
if(!(String.IsNullorEmpty(rsData["usr.ursrdaystime"].toString())){
strLevel = rsData["usr.ursrdaystime"].toString();
}
三元运营商应该做的很好的位置: 条件? first_expression:second_expression;
strLevel =!Convert.IsDBNull(rsData [ “usr.ursrdaystime”])? Convert.ToString(rsData [ “usr.ursrdaystime”]):空
在第一次使用的ExecuteScalar
objConn = new SqlConnection(strConnection);
objConn.Open();
objCmd = new SqlCommand(strSQL, objConn);
object result = cmd.ExecuteScalar();
if(result == null)
strLevel = "";
else
strLevel = result.ToString();