在 C# 中使用 sql 语句中的 and 关键字从数据库拉取数据时,在列表框中列出一个数字两次
本文关键字:两次 列表 数字 一个 数据 sql 语句 and 数据库 关键字 | 更新日期: 2023-09-27 18:35:43
很抱歉标题很大,我不知道我的代码是怎么回事。我正在提取给定工作订单号和状态代码的所有序列号,并用结果填充列表框。我的问题是,我的代码正在拉取数字,但在列表框控件中列出两次。我正在使用邮政数据库。这是我的代码。
private void Get_Serial_Numbers()
{
NpgsqlConnection conn = Connection.getConnection();
try
{
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("select product_serial_number from master_product where product_wo_number = :WorkOrder and status = :Status;", conn);
cmd.Parameters.Add(new NpgsqlParameter("WorkOrder", IdStorage.WorkOrderNumber));
cmd.Parameters.Add(new NpgsqlParameter("Status", 128));
NpgsqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
object serialNumber = dr["product_serial_number"];
lstProductsInWO.Items.Add(serialNumber.ToString());
}
if (lstProductsInWO.Items.Count == 0)
{
lstProductsInWO.Items.Add("No Data");
lblSerialInWO.Text = "Products in WO 0";
}
else
{
ProductTotal = lstProductsInWO.Items.Count;
lblSerialInWO.Text = "Products in WO " + ProductTotal.ToString();
}
dr.Close();
cmd.Dispose();
}
有两种可能性:
-
在某些事件处理程序中,您不小心调用了方法 Get_Serial_Numbers() 两次 - 通过调试来检查它以确保代码只运行一次。
-
您可以从表中获取两次项目。验证查询返回的内容(在调试器下)或针对数据库手动运行查询。