Ver Mensaje Individual
  #7 (permalink)  
Antiguo 16/11/2012, 07:22
Avatar de jhonwilliams
jhonwilliams
 
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Respuesta: Guardar imagenes en asp.net

Hola Darsk

Lo primero es recomendarte usar el Highlight del foro mira como se ve de bonito y facil de leer el codigo

Código C#:
Ver original
  1. string sql = "select * from cliente where rut =" + txtRutBuscar.Text + ";";
  2. SqlConnection conn = new SqlConnection(@"Data Source=NICOLAS-PC\SQLEXPRESS;Integrated Security=True");
  3. SqlCommand cmd = new SqlCommand(sql, conn);
  4. conn.Open();
  5. byte[] byteImage = (Byte[])cmd.ExecuteReader();
  6.  
  7. //byte n = Convert.ToByte(cmd.ExecuteReader());
  8. //byte[] byteImage = n;
  9.  
  10. if (byteImage != null)
  11. {
  12. Response.ContentType = "image/jpeg";
  13. Response.Expires = 0;
  14. Response.Buffer = true;
  15. Response.Clear();
  16. Response.BinaryWrite(byteImage);
  17. Response.End();
  18. }
  19. conn.Close();
  20.  
  21. }

Ahora si, viendo tu linea de error:
Código C#:
Ver original
  1. byte[] byteImage = (Byte[])cmd.ExecuteReader();

Puedes hacer la lectura de los datos llenando un DataTable

Luego lees la fila algo parecido a esto:

Código C#:
Ver original
  1. byte[] byteImage = myTabla.Rows[0]["foto"]

Ahora el error:
Error 1 No se puede convertir el tipo 'System.Data.SqlClient.SqlDataReader' en 'byte[]' Ese es el error que me envia, en la siguiente linea de codigo:

Este sale, porque estas asignando a tu variable byteImage que es de tipo byte[] y el cmd.ExecuteReader() no retorna este tipo de dato.

Lo que puedes hacer es algo como este ejemplo:

Código C#:
Ver original
  1. private static void CreateCommand(string queryString,
  2.     string connectionString)
  3. {
  4.     using (SqlConnection connection = new SqlConnection(
  5.                connectionString))
  6.     {
  7.         connection.Open();
  8.  
  9.         SqlCommand command = new SqlCommand(queryString, connection);
  10.         SqlDataReader reader = command.ExecuteReader();
  11.         while (reader.Read())
  12.         {
  13.             Console.WriteLine(String.Format("{0}", reader[0]));
  14.         }
  15.     }
  16. }

Mira que donde dice Console.Write estas accediendo a una posicion del reader, creo que esa posicion corresponde a cada una de las columnas que tiene la consulta.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)