请问我这段代码哪里有问题。我想把日期和数据库id结合。然后成文商品id。 
因为在添加的时候不可能读出当前id。因为还没有添加。 
所以我想找出当前数据库最大的id值。然后加1.最后结合日期 组成一个新的id号 
但是我这样的写法运行之后。得出的结果就只是日期 和后面那个1 有显示。根本没有实现id加1 后在和日期结合。以上问题都解决了。可是我发现一个新问题。就是如果用这个方法的话。那必须数据库里要有内容
如果订单开始是空的。没有任何内容,那这个方法就不行了。提示出错了string date = DateTime.Now.ToString("yyyyMMdd"); 
            string cmd1 = "select max(id) as maxid from [order]"; 
            SqlCommand cmd2 = new SqlCommand(cmd1, con);             SqlDataReader dr = cmd2.ExecuteReader();             DataTable dt = new DataTable();             dt.Columns.Add("id", typeof(System.Int32));             while (dr.Read()) 
            { 
                DataRow row = dt.NewRow(); 
                row["id"] = dr["maxid"].ToString();                 dt.Rows.Add(row); 
            } 
            dr.Close(); 
            string newid = dt.ToString(); 
            string sn = date + Convert.ToString(int.Parse(dr["maxid"].ToString())+1); 

解决方案 »

  1.   

     string date = DateTime.Now.ToString("yyyyMMdd");  
    string sn="";
    string oldid="";       
    DataTable dt = new DataTable();
            SqlDataAdapter dap = new SqlDataAdapter(cmd2);
            dap.Fill(dt);
            if (dt.Rows.Count == 0)
            {
                 sn=data+"1";
            }
            else
            {
                 sn=data+dt.Rows[0]["maxid"].ToString();
            }
      

  2.   

    string date = DateTime.Now.ToString("yyyyMMdd");  
                string cmd1 = "select max(id) as maxid from [order]";  
                SqlCommand cmd2 = new SqlCommand(cmd1, con);              SqlDataReader dr = cmd2.ExecuteReader();              DataTable dt = new DataTable();              dt.Columns.Add("id", typeof(System.Int32));              while (dr.Read())  
                {  
                    DataRow row = dt.NewRow();  
                    row["id"] = dr["maxid"].ToString();                  dt.Rows.Add(row);  
                }  
                dr.Close();  //你这里关掉了dr
                string newid = dt.ToString();  
                string sn = date + Convert.ToString(int.Parse(dr["maxid"].ToString())+1);  //所以这里dr为NULL值,tostring()后为空值修改为
    string date = DateTime.Now.ToString("yyyyMMdd");  
                String maxid="";
                string cmd1 = "select max(id) as maxid from [order]";  
                SqlCommand cmd2 = new SqlCommand(cmd1, con);              SqlDataReader dr = cmd2.ExecuteReader();              DataTable dt = new DataTable();              dt.Columns.Add("id", typeof(System.Int32));              while (dr.Read())  
                {  
                    DataRow row = dt.NewRow();  
                    row["id"] = dr["maxid"].ToString();  
                    maxid=dr["maxid"].ToString();
                    dt.Rows.Add(row);  
                }  
                dr.Close();  
                string newid = dt.ToString();  
                string sn = date + Convert.ToString(int.Parse(maxid)+1);  
      

  3.   

    sql不是有个字段类型 叫啥来的,Un开头的,可以事先取得这个标识