请问我这段代码哪里有问题。我想把日期和数据库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);
因为在添加的时候不可能读出当前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);
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();
}
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);