【发布时间】:2013-05-20 10:09:25
【问题描述】:
我想从数据库中获取第一行的第一个单元格值,它适用于以下代码。但是当没有找到结果时,它会抛出异常。
如何处理DBNull .
我应该更改我的查询吗?如果他们没有记录,则返回一些值?
System.NullReferenceException:对象引用未设置为对象的实例。
代码:
public string absentDayNo(DateTime sdate, DateTime edate, string idemp)
{
string result="0";
string myQuery="select COUNT(idemp_atd) absentDayNo from td_atd where ";
myQuery +=" absentdate_atd between '"+sdate+"' and '"+edate+" ";
myQuery +=" and idemp_atd='"+idemp+"' group by idemp_atd ";
SqlCommand cmd = new SqlCommand(myQuery, conn);
conn.Open();
//System.NullReferenceException occurs when their is no data/result
string getValue = cmd.ExecuteScalar().ToString();
if (getValue != null)
{
result = getValue.ToString();
}
conn.Close();
return result;
}
【问题讨论】:
-
哪里会抛出异常??
-
Exception throws
string getValue = cmd.ExecuteScalar().ToString();mean error 当他们没有结果时发生 -
顺便说一句,这是构建查询的真的不好的方法;清晰明了的sql注入孔;还有一个国际化问题,以及一些不必要的中间字符串。我希望这不是你平时做 sql 的方式...
-
@MarcGravell:对不起,我的坏习惯是,下次我通过使用参数化查询来处理
sqlInjection时 -
@Satindersingh 根据我编辑的答案:您实际上可以一口气解决这两个问题......只是说......
标签: c# sql asp.net sql-server database