我检查数据库表中的条形码(使用选择查询)是否存在,并将详细信息插入另一个数据库表,否则条形码不存在。插入很好,但我想计算输入的条形码数量。在一个会话中,用户输入5个条形码,然后总计数为5,但我的代码保持返回1而不是递增。
protected void btnReturn_Click(object sender, EventArgs e)
{
string barcode = txtBarcode.Text;
string location = lblLocation.Text;
string user = lblUsername.Text;
string actType = lblAct.Text;
string date = lblDate.Text;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TWCL_OPERATIONSConnectionString"].ToString());
//commands identifying the stored procedure
SqlCommand cmd = new SqlCommand("selectCrate", conn);
SqlCommand cmd1 = new SqlCommand("CreateCrateBox", con);
// execute the stored procedures
cmd.CommandType = CommandType.StoredProcedure;
cmd1.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@crateno", barcode);
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows) {
while (reader.Read())
{
lblResult.Text = reader[0].ToString();
lblResult1.Text = reader[1].ToString();
cmd1.Parameters.Add("@crateno", SqlDbType.NVarChar).Value = barcode);
cmd1.Parameters.Add("@CurrentLocation", SqlDbType.NVarChar).Value = location;
cmd1.Parameters.Add("@Username", SqlDbType.NVarChar).Value = user;
cmd1.Parameters.Add("@Date", SqlDbType.DateTime).Value = date;
cmd1.Parameters.Add("@status", SqlDbType.NVarChar).Value = actType;
counter = counter + 1;
}
reader.Close();
cmd1.ExecuteNonQuery();
txtCount.Text = counter.ToString();
lblCount.Text = string.Format("Number of rows: {0}", counter);
}
else
{
lblError.Text = barcode + " does not exist!!";
}
}
答案 0 :(得分:0)
我重新检查确认并且我误解了你的问题导致了一些混乱。
为了回答您的问题,我不认为有任何简单解决方案可以实时更新数字。我能想到的任何解决方案都是websocket连接,我个人不了解webforms内部(不知道它是否可能)。
我格式化了你的代码。这应该一次性返回总行数(屏幕上没有实时更新)。
protected void btnReturn_Click(object sender, EventArgs e)
{
int counter = 0;
string barcode = txtBarcode.Text;
string location = lblLocation.Text;
string user = lblUsername.Text;
string actType = lblAct.Text;
string date = lblDate.Text;
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TWCL_OPERATIONSConnectionString"].ToString()))
{
con.Open();
//commands identifying the stored procedure
using (SqlCommand cmd = new SqlCommand("selectCrate", con))
{
using (SqlCommand cmd1 = new SqlCommand("CreateCrateBox", con))
{
// execute the stored procedures
cmd.CommandType = CommandType.StoredProcedure;
cmd1.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@crateno", barcode));
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
lblResult.Text = reader[0].ToString();
lblResult1.Text = reader[1].ToString();
cmd1.Parameters.Add("@crateno", SqlDbType.NVarChar).Value = barcode;
cmd1.Parameters.Add("@CurrentLocation", SqlDbType.NVarChar).Value = location;
cmd1.Parameters.Add("@Username", SqlDbType.NVarChar).Value = user;
cmd1.Parameters.Add("@Date", SqlDbType.DateTime).Value = date;
cmd1.Parameters.Add("@status", SqlDbType.NVarChar).Value = actType;
counter++;
}
cmd1.ExecuteNonQuery();
txtCount.Text = counter.ToString();
lblCount.Text = string.Format("Number of rows: {0}", counter);
}
else
{
lblError.Text = barcode + " does not exist!!";
}
}
}
}
}
}
答案 1 :(得分:0)
您可以在会话中存储该号码,然后在会话结束时将其存储(将其存储在数据库或任何您想要的内容中)。声明一个会话变量:
Session[“NumInserts”] = 0;
然后用每个插入更新它:
Session[“NumInserts”] = (int) Session[“NumInserts”] + 1;
只要会话存在,该变量就会被维护。此外,请确保仅声明会话变量一次,并且不要在会话的生命周期中允许它重置。否则,它将返回0并给你不准确的结果。