failed to perform Convert.ToInt32

0
public int cantPembarcar(String pCodigoArticulo)
  {

      string strCon = ConfigurationManager.ConnectionStrings["Sk_DBRadioFrecuencias"].ConnectionString;
      SqlConnection conn = new SqlConnection(strCon);
      SqlCommand comm = new SqlCommand();
      comm.Connection = conn;
      if (pCodigoArticulo.Length > 11)
      {
          vArticuloEAN = pCodigoArticulo.Substring(0, 13);
          comm.CommandText = "SELECT  SE_Cantidad_Pend_Embarque FROM SE_FactEmbarque WHERE SE_EAN_Articulo = " + "'" + pCodigoArticulo + "'" + " AND SE_Orden_De_Venta  = " + "'" + CboOrdendeVenta.SelectedItem.Value + "'";
          vConsultaEan = true;
      }
      else
      {
          comm.CommandText = "SELECT SE_Cantidad_Pend_Embarque  FROM SE_FactEmbarque WHERE  SE_Codigo_Articulo = " + "'" + pCodigoArticulo + "'" + "AND SE_Orden_De_Venta  = " + "'" + CboOrdendeVenta.SelectedItem.Value + "'";
          vConsultaEan = false;

      }

      conn.Open();

      SqlDataReader nwReader = comm.ExecuteReader();
      if (nwReader.Read())
      {
          String valeFromDB = nwReader[0].ToString().Trim();
          return Convert.ToInt32(valeFromDB);

      }
      return -1;

It does not let me make the conver, it tells me that La cadena de entrada no tiene el formato correcto.

    
asked by Eduard Zora 02.04.2017 в 00:09
source

1 answer

2

You have to use parameters in the code and NEVER concatenate in a string, it's bad practice

public int cantPembarcar(string pCodigoArticulo)
{
      string articulo = pCodigoArticulo;

      string strCon = ConfigurationManager.ConnectionStrings["Sk_DBRadioFrecuencias"].ConnectionString;
      SqlConnection conn = new SqlConnection(strCon);
      conn.Open();


      string query = "";
      if (pCodigoArticulo.Length > 11)
      {
          articulo = articulo.Substring(0, 13);
          query = "SELECT  SE_Cantidad_Pend_Embarque FROM SE_FactEmbarque WHERE SE_EAN_Articulo = @articulo AND SE_Orden_De_Venta = @ordenventa";
      }
      else
      {
          query = "SELECT SE_Cantidad_Pend_Embarque FROM SE_FactEmbarque WHERE SE_Codigo_Articulo = @articulo AND SE_Orden_De_Venta = @ordenventa";
      }

      SqlCommand comm = new SqlCommand(query, conn);
      comm.Parameters.AddWithValue("@articulo", articulo);
      comm.Parameters.AddWithValue("@ordenventa", CboOrdendeVenta.SelectedItem.Value);

      object result = comm.ExecuteScalar();

      int valeFromDB = -1;
      if(result != DBNull.Value){
        valeFromDB = Convert.ToInt32(result);
      }

      return valeFromDB;

}     
    
answered by 02.04.2017 / 21:06
source