在 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();
        }

在 C# 中使用 sql 语句中的 and 关键字从数据库拉取数据时,在列表框中列出一个数字两次

有两种可能性:

  1. 在某些事件处理程序中,您不小心调用了方法 Get_Serial_Numbers() 两次 - 通过调试来检查它以确保代码只运行一次。

  2. 您可以从表中获取两次项目。验证查询返回的内容(在调试器下)或针对数据库手动运行查询。