为0还是为空?
if(sybReader["field"].ToString() == "0")
{}
if(sybReader["field"] == DBNull.Value)
{}

解决方案 »

  1.   

    If Not sybReader.Read() Then
      

  2.   

    if(this.syb.sybReader["char10_1"]!=DBNull.Value) 或
    if(this.syb.sybReader["char10_1"].ToString()=="0")
    都提示如下错误:
    ***********************************************
    No data exists for the row/column. 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: No data exists for the row/column.
    ********************************************
    我最初是用 if(this.syb.sybReader.Read()) 也不起作用!!!!!!!!!!!!!我的本意是判断 sybReader 有没有查到符合条件的记录?
    请再指点一下, 谢谢!
      

  3.   

    再试了一下,发现用if(this.syb.sybReader.Read()) 能判断有没有记录,但是有记录的却不能显示起来???之前都是好的,可能是做了 Read() 判断,请教如何修改?
    代码我贴出来:
    syb.Reader(select);
    if(this.syb.sybReader.Read())
    {
    table=new DataTable();
    syb.AddColumn("日期",table);
    syb.AddColumn("出租率",table);
    syb.AddColumn("平均温度",table);
    syb.AddColumn("水耗",table);
    syb.AddColumn("电耗",table);
    syb.AddColumn("油耗",table);
    syb.AddColumn("气耗",table);
    syb.AddColumn("煤耗",table);
    syb.AddRow(table);
    this.DataGrid1.DataSource=table;
    this.DataGrid1.DataBind();
    syb.Close();
    this.Label2.Visible=false;
    this.DataGrid1.Visible=true;
    return ;
    }
    else
    {
    this.Label2.Text="Sorry!没有符合条件的记录.....";
    this.Label2.Visible=true;
    this.DataGrid1.Visible=false;
    syb.Close();
    return ;
    }
    *************
    public void Reader(string str)
    {
    Open();
    sybCommand=new OdbcCommand(str,sybConnection);
    sybReader=sybCommand.ExecuteReader();
    }
    public void AddColumn(string col,DataTable MyTable)
    {
    myColumn = new DataColumn();
    myColumn.ColumnName =col;
    myColumn.DataType = System.Type.GetType("System.String");
    myColumn.Unique =false;
    myColumn.AutoIncrement = false;
    myColumn.ReadOnly = false;
    MyTable.Columns.Add(myColumn);
    }
    public void AddRow(DataTable myTable)
    {
    //Reader(str_sql);
    while(sybReader.Read ())
    {
    dr=myTable.NewRow();
    int total=sybReader.FieldCount;
    for(int i=0;i<total;i++)
    {
    dr[i]=sybReader.GetString(i);
    }
    myTable.Rows.Add(dr);
    }
            }
      

  4.   

    if(this.syb.sybReader.Read())改成
    while(this.syb.sybReader.Read())
      

  5.   

    syb.AddRow(table);
    this.DataGrid1.DataSource=table;
    this.DataGrid1.DataBind();
    syb.Close();
    这一部分代码只能显示一个具有表头的空表,因为你没有向表里增加数据
      

  6.   

    TO xrascal(横刀夺爱) 
    to liuyong_lll(孤醉) 改While 是不对的,因为我下面调用的函数AddRow()已经用了While
    to hhzh426(春之风)   我代码没有贴全,是可以的,我已经改好了:
    public bool AddRow(DataTable myTable)
    {
    while(sybReader.Read ())
    {
    dr=myTable.NewRow();
    int total=sybReader.FieldCount;
    for(int i=0;i<total;i++)
    {
    dr[i]=sybReader.GetString(i);
    }
    myTable.Rows.Add(dr);
    }
    if(myTable.Rows.Count==0) return false;   //
    else return true;//这两句新加的,OK了
    ______________________________________
    谢谢各位,My QQ;81623859 , 加我,一起学吧