在添加新数据的时候,查找数据库内最大的ID值(位置是第0列)。但是我想加个判断,就是当数据库内有数据的时候,当前最大ID值+1,如果数据库内没有数据的时候,ID值=1。这是我已经写好的语句,肯定有问题,但是我不知道怎么改,请教高手帮忙改一下。我知道方法很多,但是请高手按照我这个思路改,否则小弟初学,怕看不懂,谢谢!!!
                maxID = 0;
                string strMaxidSql = "select max(Book_ID) from BookMaster";
                DataTable tempDataTable = link.SelectDataBase(strMaxidSql);
                if (tempDataTable.Rows.Count == 0)
                {
                    maxID = 1;
                }
                else
                {
                    maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;
                }
                AddBook();//添加数据的共通函数,这个没问题不用管

解决方案 »

  1.   


    LINK 应该是个静态的DATA操作类把~~看下 你那个方法 执行出来是不是你要的结果?··别的我没看出什么问题··我也是新手··
      

  2.   

    把id设置成自增量就行了啊,不用判断不用管,你只顾插别的数据,不用管id
      

  3.   

    你硬要这样就可以试试这个 maxID = 0;
      string strMaxidSql = "select isnull(max(Book_ID),-1) from BookMaster";
      DataTable tempDataTable = link.SelectDataBase(strMaxidSql);
      if (tempDataTable.Rows[0].[0] == -1)
      {
      maxID = 1;
      }
      else
      {
      maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;
      }
      AddBook();//添加数据的共通函数,这个没问题不用管
      

  4.   

    id int identity primary key
      

  5.   

    打开数据库--》右击BookMaster表-》修改,找到bookid哪列,标识规范:是;(是标识)是,标识增量 1,标识种子1
      

  6.   

    我想楼主是要读数据库,而不是插入数据吧你的想法可以用这样的代码实现            int maxID = 1;            string cnString = @"Data Source=.\SQLEXPRESS;Initial Catalog=LearnSQL;Integrated Security=True";
                using(SqlConnection conn = new SqlConnection(cnString)) {
                    conn.Open();
                    SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "SELECT MAX(id) FROM Person";
                    object o = cmd.ExecuteScalar();
                    if(o != null)
                        maxID = (int)o + 1;
                }
                Console.WriteLine(maxID);
      

  7.   

    我已经写好的那些语句,出现的问题就是当数据库内没有信息的时候,添加新信息的时,
    maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;这条语句会出现这个错误,オブジェクトを DBNull から他のタイプにキャストすることはできません(在词霸里翻译出来的是这个意思:可以转换为DBNull,以从其他类型的对象可以;在Yahoo里翻译出来的是这个意思:不能在其他的型从DBNull做演员表对象)。呃...有点无语哈,可是没办法,各位高手费心了!!!
      

  8.   

    我估计就是当数据库内没有数据时,这个maxID取不出来值,所以出错。怎么改,就是我的问题,高手们帮帮忙啊!!!
    版主大人呢,给兄弟指个方向吧!!!
      

  9.   

     string strMaxidSql = "select isnull(max(Book_ID),-1) from BookMaster";
    book_id为空时,返回-1,
      

  10.   

    top 1 order by id desc
      

  11.   

    cmd.ExecuteScalar();
    如果没有数据会返回null,判断一下就行了