折磨人啊,寻解决之道~~~高手。。。
在html代码的 <Title> </Title> 里加入
<%=Convert.IsDBNull(dr1[ "name "]) ? "没有数据 " : "22 "%> 要显示数据库的一个信息,后台代码
public DataRow dr1;
public void datalist1()
{
try
{
SqlConnection conn = new SqlConnection( "server=.;uid=11;pwd=11;database=table1; ");
SqlDataAdapter ad = new SqlDataAdapter( "select * from table1 ", conn);
conn.Open();
DataSet ds = new DataSet();
ad.Fill(ds, "table1 ");
if(ds.Tables[ "table1 "].Rows.Count <=0)
{
Response.Write ( "记录集为空 ");
}
else
{
dr1 = ds.Tables[ "table1 "].Rows[0];
DataList1.DataSource = ds;
DataList1.DataBind();
conn.Close();
}
}
catch (Exception me)
{
Response.Write(me.Message);
}
}
出现的问题是~ 如果数据库为空,不会报出try catch的异常,也不会输入 “记录集为空”,直接出现 未将对象引用设置到对象的实例。如果字段为空则没有错误,但是数据库为空就这样,求解决办法~~~~~~~~~~~
[解决办法]
SqlDataAdapter ad = new SqlDataAdapter( "select top 1 * from table1 ", conn);
//conn.Open();
//dr1 = ds.Tables[ "table1 "].Rows[0];
DataList1.DataSource = ds.Tables[ "table1 "];
DataList1.DataBind();
//conn.Close();
[解决办法]
dr1[ "name "]
你放在title里面这样能取到值就奇怪了!!再说:
=Convert.IsDBNull是判断值是不是为空.不是赋值吧!!!
[解决办法]
表是有,有数据的时候没问题, 表里的数据为空就不行了
------------------------------------
为kong的时候,你的dr1为null,try:
public DataRow dr1 = null;
public string go()
{
if(dr1==null || dr1[ "name "] == DBNull.Value)
{
return "没数据 ";
}
else
{
return "22 ";
}
}
然后 <%= go() %>
[解决办法]
你的dr1是不是也可能为null?