其中fectht.Rows[0][0].ToString()的值为"3"
===========================================
if (fectht.Rows[0][0].ToString() == "3")
  ...我认为fectht.Rows[0][0].ToString()的值一定不是"3",否则不会出错

解决方案 »

  1.   

    不会哟
    我就是写了
    select max(nodeindex) from table1
    我也查了一下
    select len(nodeindex) from table1
    显示结果都为1,即该数据库表字段中值长度均为1
      

  2.   

    我猜是空格的问题
    string ss=fectht.Rows[0][0].ToString().Trim();
      

  3.   

    你的代码没问题
    你跟踪一下fectht.Rows[0][0].ToString().
      

  4.   

    我的目录是,先找数据库表中,某条件下的nodeindex的最大值,然后转换最大值为int类型,再加1
    但始终在转换时报错
    private void Button1_Click(object sender, System.EventArgs e)
    {
    int nodeindex;
    SqlConnection Conn1=new SqlConnection("Data Source=hkserver;Integrated Security=SSPI;Initial Catalog=useraccounts;User ID=sa;Password=");
    string subndindex="select max(nodeindex) from goodstable where parenttagid='"+tv1.GetNodeFromIndex(tv1.SelectedNodeIndex).Text.ToString()+"'";//得到一个最大值
    Conn1.Open();
    SqlDataAdapter db_sqladaptor1=new SqlDataAdapter(subndindex,Conn1);
    DataSet fecthsub=new DataSet();
    DataTable fectht=new DataTable();
    fecthsub.Tables.Add(fectht);
    fecthsub.Tables[0].TableName="fectht";
    db_sqladaptor1.Fill(fecthsub,"fectht");
    if(fectht.Rows[0][0].ToString()=="NULL")
    { nodeindex=0;Conn1.Close();}
    else
    {
    string ss=fectht.Rows[0][0].ToString().Trim(); int n=Convert.ToInt32(ss);
    nodeindex=n++;
    Label1.Text=ss.ToString();Conn1.Close();
    }
      

  5.   

    从你的程序上看,max(nodeindex)查询的应该是一个整形的数值引索
    可以不要用max(),改用select nodeindex from 表名 where 条件
    得到一个数据集放进DataTable中然后:
    int nodeindex=0;
    for(int i<DataTable.Rows.Count;i++)
    {
       if(nodeindex<=Conert.ToInt32(DataTable.Rows[i][0].ToString()))
          {
             nodeindex++;当前索引最大值加1
          }
    }......后面你自己去构建了