2015-09-06 25 views
0

我需要獲取參數param_IDFICHA的所有值(如果它存在並使用各自的值填充所有參數列表)。更多的是跳第一個ID和第二個ID開始。參數列表跳過SQL上表的第一個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; 

    } 

回答

0

你正在做的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(); 
      } 
     } 

    } 
+0

感謝您的幫助,解決了這個問題。 –