参数列表在 SQL 上跳转 Table 的第一个 ID

The Parameter List its jumping the First ID of Table on SQL

我需要获取参数 param_IDFICHA 的所有值(如果存在)并用您各自的值填充所有参数列表。更多的是它跳跃的第一个 ID 和它开始的第二个 ID。

例如:

如果我有数据SQL

Jhon 3 2

Crazy 1 2

Egg 4 1

列表参数仅列出

Crazy 1 2

Egg 4 1

代码

public void Search_IDFicha(int param_IDFICHA, List<string> list_peixe, List<string> list_quant, List<string> list_peso)
    {
        SqlDataReader objReader;
        SqlCommand objcmd = null;

        vsql = "SELECT [ID_FICHA], [RGP], [PEIXE], [PESO], [QUANTIDADE], [DATA_REGISTRO] FROM cadastro WHERE ID_FICHA = @ID_FICHA";
        if (this.Conectar())
        {
            try
            {
                objcmd = new SqlCommand(vsql, objCon);

                objcmd.Parameters.Add(new SqlParameter("@ID_FICHA", param_IDFICHA));

                objReader = objcmd.ExecuteReader();

                if (objReader.Read())
                {
                    valor.retorna_IdFIcha = objReader.GetInt32(0);

                    while (objReader.Read())
                    {
                        list_peixe.Add(objReader.GetString(2));
                        list_peso.Add(objReader.GetDouble(3).ToString());
                        list_quant.Add(objReader.GetInt32(4).ToString());
                    }

                }

            }
            catch
            {

            }
            finally
            {
                this.Desconectar();
            }
        }

    }

   private void btn_Buscar_Click(object sender, EventArgs e)
   {
       int param_idficha = Convert.ToInt32(txtb_idFicha.Text);

      _peixe_list.Clear();
       _quant_list.Clear();
       _peso_list.Clear();

       objSQL.Search_IDFicha(param_idficha,_peixe_list,_quant_list,_peso_list);

       int i = String.Compare(Convert.ToString(valor.retorna_IdFIcha), Convert.ToString(param_idficha));

       listBox1.DataSource = _peixe_list;

   }

您正在执行两次 READ()。它应该只在循环中调用。 每次调用 Read() 方法时,它都会前进到下一条记录,这就是您跳过第一条记录的原因。

public void Search_IDFicha(int param_IDFICHA, List<string> list_peixe, List<string> list_quant, List<string> list_peso)
    {
        SqlDataReader objReader;
        SqlCommand objcmd = null;

        vsql = "SELECT [ID_FICHA], [RGP], [PEIXE], [PESO], [QUANTIDADE], [DATA_REGISTRO] FROM cadastro WHERE ID_FICHA = @ID_FICHA";
        if (this.Conectar())
        {
            try
            {
                objcmd = new SqlCommand(vsql, objCon);

                objcmd.Parameters.Add(new SqlParameter("@ID_FICHA", param_IDFICHA));

                objReader = objcmd.ExecuteReader();

                while (objReader.Read())
                {
                    valor.retorna_IdFIcha = objReader.GetInt32(0);
                    list_peixe.Add(objReader.GetString(2));
                    list_peso.Add(objReader.GetDouble(3).ToString());
                    list_quant.Add(objReader.GetInt32(4).ToString());
                }
            }
            catch
            {

            }
            finally
            {
                this.Desconectar();
            }
        }

    }