none
Mostrar todas las imagenes de una tabla de la base de datos SQL SERVER en un sitio web en ASP.NET C# RRS feed

  • Pregunta

  • Hola a todos, tengo una solución en .Net la cual tiene una pagina que muestra las imagenes sacadas de la tabla llamada "peliculas",quisiera que en ella se muestren todas las imagenes de la tabla llamada "peliculas" ya que son muchisimas y no quiero estar todo el tiempo referenciando con un <input type="image" src="imagenes/imagen1.jpg" onclick=".../"> a cada una de ellas y quisiera hacerlo todo de una sola, He leído foros con códigos que hacen en PHP pero no se como adaptarlo, el codigo en php que quiero implementar es este:

    <?php
    
       require("conexion.php"); //conectando a la base de datos
       $select='select * from peliculas';
       $resultado=mysqli_query($miconexion,$select);
    
    while($filas=mysqli_fetch_array($resultado))
    {
     echo '<div>';
         echo '<input type="image" src="data:image/jpg;base64,'.base64_encode($filas["Imagen"]).'" onclick="">';
    }
    echo '<div>';
    mysqli_free_result($resultado);
      ?>
    Gracias.




    sábado, 16 de noviembre de 2019 18:52

Todas las respuestas

  • Si quieres puedes reproducir ese mismo procedimiento en .Net. Podría ser algo más o menos similar a lo siguiente (no lo he probado, puede haber algunas comillas fuera de lugar o algún pequeño fallo similar, pero eso lo arreglas sobre la marcha):

    public StringBuilder resultado = new StringBuilder(); ... using (var cn = new SqlConnection(cadenaDeConexion)) { var cmd = new SqlCommand("select imagen from peliculas", cn);

    cn.Open(); using (SqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { resultado.Append("<img src='data:image/jpg;base64," + Convert.ToBase64String(rdr["Imagen"]) + "' />"; } } } // En el .aspx, incrustar el resultado usando <%=resultado.ToString()%>



    domingo, 17 de noviembre de 2019 8:20
  • yo lo intente pero me sale error.

    el codigo que escribi es este:

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Text; /*para poder usar StringBuilder */ public partial class Index : System.Web.UI.Page { public StringBuilder resultado = new StringBuilder();

    protected void Page_Load(object sender, EventArgs e) { SqlConnection cn = new SqlConnection("Data Source=EverCastellon\\SQLEXPRESS; Initial Catalog=programacion2; Integrated Security=True"); SqlCommand cmd = new SqlCommand("select ImgPelicula from Pelicula",cn); cn.Open(); using (SqlDataReader rdr=cmd.ExecuteReader()) { while(rdr.Read()) { resultado.Append("<img src='data:image/jpg;base64," + Convert.ToBase64String(rdr["ImgPelicula"]) + "' />"); } } } }

    y los errores que me salen son estos:




    miércoles, 20 de noviembre de 2019 3:24
  • Efectivamente, a eso se refería la frase donde te dije "no lo he probado, puede haber algunas comillas fuera de lugar o algún pequeño fallo similar, pero eso lo arreglas sobre la marcha". En este caso el "pequeño fallo" que debería saltar a la vista nada más ver el mensaje de error es que falta el "cast" para convertir el rdr[...], que es de tipo object, al byte[] que requiere la función a la que se lo pasamos.

    ...Convert.ToBase64String((byte[])rdr["ImgPelicula"]) ...

    Esto debería ser bastante evidente, dado que siempre lo hacemos todo el rato cada vez que usamos un DataReader.

    Puede que además de este haya algún otro problemilla que detectes sobre la marcha. Por ejemplo, si en la base de datos hay registros que tengan un NULL en la imagen, esa sentencia dará un error al tratar de convertir el DBnull en byte[]. Si así fuera, eso lo resolverías con un "if" o con un "where" en la sentencia. Y de manera similar cualquier otro incidente que observes sobre la marcha. Lo que quiero decir con esto es que cuando te ponen un bloque de código en los foros no se trata de algo que se pueda copiar "a ciegas" sin entender lo que hace y esperar que funcione a la primera sin mover ni una sola coma. En su lugar, se trata de proporcionar la idea general de cuál sería la vía para solucionar un determinado problema, y el código solo está pensado para que sirva de inspiración indicando en líneas generales cuáles serían los pasos que habría que tomar, o cuáles serían las clases y métodos que se pueden usar. Pero a partir de eso hay que construir el código "real", corregirlo, probarlo y depurarlo, no se puede tomar literalmente el ejemplo sin comprender lo que hace y sin aplicarle los pequeños cambios que requiera.

    miércoles, 20 de noviembre de 2019 7:37