代码如下:
 sql = "select * from xxx";
        SqlDataAdapter rs = new SqlDataAdapter(sql,conn);
        DataSet ds = new DataSet();
        rs.Fill(ds,"zxjx");
        if (ds.Tables["zxjx"].Rows.Count > 0)
        {
            num1 = ds.Tables["zxjx"].Rows.Count;
            num = ds.Tables["zxjx"].Rows[num1]["编号"] + 1;        }为什么 rows[num1]这块报错?? 不能付一个变量吗?? 如果想付标量应该如何做?

解决方案 »

  1.   

    C#中的数组是从0开始的,所以你的这句num = ds.Tables["zxjx"].Rows[num1]["编号"] + 1;应该改成:
    num = ds.Tables["zxjx"].Rows[num1 - 1]["编号"] + 1;
      

  2.   

    现在问题不是下标越界。而是:Compiler Error Message: CS0019: Operator '+' cannot be applied to operands of type 'object' and 'int'Source Error: Line 34:         {
    Line 35:             num1 = ds.Tables["zxjx"].Rows.Count;
    Line 36:             num = ds.Tables["zxjx"].Rows[num1-1]["编号"] + 1;
    Line 37: 
    Line 38:         }
     
      

  3.   

    num = (int)(ds.Tables["zxjx"].Rows[num1-1]["编号"]) + 1;
    试试
      

  4.   

    这回错误如下:Exception Details: System.InvalidCastException: Specified cast is not valid.Source Error: 
    Line 34:         {
    Line 35:             num1 = ds.Tables["zxjx"].Rows.Count-1;
    Line 36:             num = (int)(ds.Tables["zxjx"].Rows[num1]["编号"]) + 1;
    Line 37: 
    Line 38:         }
     
      

  5.   

    问题解决,将(int)换成convert.toint32即可