Este artículo resume cómo almacenar imágenes en SQL Server y leerlas y mostrarlas en .Net WinForm y .Net WebForm (asp.net).
1. Utilice asp.net para cargar la imagen y almacenarla en SQL Server, luego léala desde SQL Server y muéstrela:
1) Cargar y guardar en SQL Server
Estructura de la base de datos
crear prueba de tabla
{
identidad(1,1),
FImagen imagen
}
Procedimientos almacenados relacionados
Crear imagen de actualización de proceso
(
@ActualizarImagen Imagen
)
Como
Insertar en valores de prueba (FImage) (@UpdateImage)
IR
Agregue lo siguiente al archivo UpPhoto.aspx:
<input id="UpPhoto" nombre="UpPhoto" runat="servidor" tipo="archivo">
<asp:Botón id="btnAdd" nombre="btnAdd" runat="servidor" Texto="Cargar"></asp:Botón>
Luego agregue el código de procesamiento del evento de clic del botón btnAdd en el archivo de código subyacente UpPhoto.aspx.cs:
btnAdd_Click privado vacío (remitente del objeto, System.EventArgs e)
{
//Obtener la imagen y convertirla a byte[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=nuevo Byte[upPhotoLength];
Transmitir PhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//Conectarse a la base de datos
Conexión SqlConnection=nueva conexión Sql();
conn.ConnectionString="Fuente de datos=localhost;Base de datos=prueba;Id. de usuario=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;
//Si desea agregar imágenes sin utilizar procedimientos almacenados, cambie las cuatro líneas de código anteriores a:
//string strSql="Insertar en valores de prueba(FImage)(@FImage)";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;
conexión.Open();
cmd.ExecuteNonQuery();
conexión.Cerrar();
}
2) Lea desde SQL Server y muéstrelo. Agregue el siguiente código donde se debe mostrar la imagen:
<asp:image id="imgPhoto" runat="servidor" ImageUrl="ShowPhoto.aspx"></asp:image>
Código del cuerpo ShowPhoto.aspx:
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
si(!Página.IsPostBack)
{
Conexión SqlConnection=nueva SqlConnection()
conn.ConnectionString="Fuente de datos=localhost;Base de datos=prueba;Id. de usuario=sa;Pwd=sa";
string strSql="select * from test donde id=2";//Supongamos aquí que se obtiene la imagen con id 2
SqlCommand cmd=new SqlCommand(strSql,conn);
conexión.Open();
Lector SqlDataReader=cmd.ExecuteReader();
lector.Read();
Response.ContentType="aplicación/octeto-stream";
Response.BinaryWrite((Byte[])lector["FImage"]);
Respuesta.End();
lector.Cerrar();
}
}
2. Guarde la imagen en SQL Server en WinForm, léala desde SQL Server y muéstrela en el cuadro de imagen.
1), almacenar en SQL Server
La estructura de la base de datos y los procedimientos almacenados utilizados son los mismos que los anteriores. Primero, agregue un control OpenFileDialog al formulario y asígnele el nombre dSelectPic;
Luego, agregue un botón de abrir archivo en el formulario y agregue el siguiente código de evento de clic:
Transmitir ms;
byte[] picbyte;
//ofdSelectPic.ShowDialog();
si (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
si ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ok");
picbyte=nuevo byte[ms.Longitud];
ms.Posición=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("¡Lectura completada!");
//Conectarse a la base de datos
Conexión SqlConnection=nueva conexión Sql();
conn.ConnectionString="Fuente de datos=localhost;Base de datos=prueba;Id. de usuario=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=picbyte;
conexión.Open();
cmd.ExecuteNonQuery();
conexión.Cerrar();
ms.Cerrar();
}
}
2) Leer y mostrar en el cuadro de imagen Primero, agregue un cuadro de imagen llamado ptbShow
Luego, agregue un botón y agregue el siguiente evento de respuesta:
Conexión SqlConnection=nueva conexión Sql();
conn.ConnectionString="Fuente de datos=localhost;Base de datos=prueba;Id. de usuario=sa;Pwd=sa";
string strSql="seleccione FImage de la prueba donde id=1";
SqlCommand cmd=new SqlCommand(strSql,conn);
conexión.Open();
Lector SqlDataReader=cmd.ExecuteReader();
lector.Read();
MemoryStream ms=new MemoryStream((byte[])lector["FImage"])
;
lector.Cerrar();
conexión.Cerrar();
ptbShow.Imagen=imagen;
Dirección original: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx