Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Data;
- using System.Drawing;
- using System.Windows.Forms;
- using System.IO;
- using System.Data.SqlClient;
- namespace testCSharp
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- lblRutaImagen.Text = "";
- }
- private const string CONNSTR = @"Data Source=.\SQLEXPRESS;Initial Catalog=DB_test;Integrated Security=True;";
- /// <summary>
- /// Guarda en la base de datos el contenido de un archivo gráfico
- /// </summary>
- /// <param name="id">Identificador único (clave de la tabla) de la imagen</param>
- /// <param name="filefoto">ruta y nombre de la imagen</param>
- private void InsertarFotoEnBDD(int id, string filefoto)
- {
- try
- {
- MemoryStream ms = new MemoryStream();
- FileStream fs = new FileStream(filefoto, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
- ms.SetLength(fs.Length);
- fs.Read(ms.GetBuffer(), 0, (int)fs.Length);
- byte[] arrImg = ms.GetBuffer();
- ms.Flush();
- fs.Close();
- using (SqlConnection conn = new SqlConnection(CONNSTR))
- using (SqlCommand cmd = conn.CreateCommand())
- {
- conn.Open();
- cmd.CommandText = "insert into IMAGENES (" +
- " [id]" +
- ",[nombre]" +
- ",[imagen]" +
- ") VALUES (" +
- " @id" +
- ",@nombre" +
- ",@imagen" +
- ")";
- cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = id;
- cmd.Parameters.Add("@nombre", SqlDbType.NVarChar, 64).Value = Path.GetFileName(filefoto);
- cmd.Parameters.Add("@imagen", SqlDbType.VarBinary).Value = arrImg;
- cmd.ExecuteNonQuery();
- }
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- /// <summary>
- /// Accede a la base de datos para recuperar una imagen
- /// </summary>
- /// <param name="id">Valor del ID en la tabla de las imágenes</param>
- /// <param name="savetofolder">Ruta del disco donde se guardará la imagen recuperada. La imagen se guardará con el mimso con el que se guardó originalmente</param>
- private void ObtenerFotoDeBDD(int id, string savetofolder)
- {
- try
- {
- using (SqlConnection conn = new SqlConnection(CONNSTR))
- using (SqlCommand cmd = conn.CreateCommand())
- {
- conn.Open();
- cmd.CommandText = "select [nombre], [imagen] from IMAGENES where [id]=@id";
- cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = id;
- SqlDataReader reader = null;
- reader = cmd.ExecuteReader();
- reader.Read();
- string nombreFicheroBDD = (string)reader[0];
- string nSave = savetofolder + nombreFicheroBDD;
- byte[] arrImg = (byte[])reader[1];
- MemoryStream ms = new MemoryStream(arrImg);
- FileStream fs = new FileStream(nSave, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
- ms.WriteTo(fs);
- fs.Flush();
- fs.Close();
- ms.Close();
- }
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- /// <summary>
- /// Devuelve un objeto de tipo Image
- /// </summary>
- /// <param name="id">Identificador de la imagen</param>
- /// <returns></returns>
- private Image ObtenerBitmapdeBDD (int id)
- {
- try
- {
- using (SqlConnection conn = new SqlConnection(CONNSTR))
- using (SqlCommand cmd = conn.CreateCommand())
- {
- conn.Open();
- cmd.CommandText = "select [imagen] from IMAGENES where [id]=@id";
- cmd.Parameters.Add("@id", SqlDbType.BigInt).Value = id;
- byte[] arrImg = (byte[])cmd.ExecuteScalar();
- MemoryStream ms = new MemoryStream(arrImg);
- Image img = Image.FromStream(ms);
- ms.Close();
- return img;
- }
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- #region Botones
- // Botón para seleccionar una imagen
- private void btnImgDialog_Click(object sender, EventArgs e)
- {
- OpenFileDialog fd = new OpenFileDialog();
- fd.Filter ="*.bmp;*.gif;*.jpg;*.png|*.bmp;*.gif;*.jpg;*.png";
- fd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
- fd.Title = "seleccionar la imagen que se guardará en la base de datos";
- fd.RestoreDirectory = true;
- if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- lblRutaImagen.Text = fd.FileName;
- pictureBox1.Image = Image.FromFile(fd.FileName);
- pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
- btnSaveToBDD.Enabled = true;
- }
- else
- {
- lblRutaImagen.Text = "";
- pictureBox1.Image = null;
- btnSaveToBDD.Enabled = false;
- }
- }
- // Botón Guardar la imagen seleccionada en la base de datos
- private void btnSaveToBDD_Click(object sender, EventArgs e)
- {
- string str = mskId.Text.Trim();
- int Num;
- bool isNum = int.TryParse(str, out Num);
- if (!isNum)
- {
- MessageBox.Show("Falta introducir un id","Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- mskId.Focus();
- }
- else
- {
- if (pictureBox1.Image == null || lblRutaImagen.Text =="")
- {
- MessageBox.Show("Falta seleccionar la foto a guardar en la base de datos", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- }
- else
- {
- try
- {
- InsertarFotoEnBDD(Num, lblRutaImagen.Text);
- MessageBox.Show("Se guardó la foto en la base de datos","Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- }
- }
- // Botón Recuperar imagen desde la base de datos y generar un nuevo fichero en C:\Temp con
- // el contenido de dicha imagen
- private void btnLoadFromBDDtoFile_Click(object sender, EventArgs e)
- {
- string str = mskId.Text.Trim();
- int Num;
- bool isNum = int.TryParse(str, out Num);
- if (!isNum)
- {
- MessageBox.Show("Falta introducir un id", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- mskId.Focus();
- }
- else
- {
- try
- {
- lblRutaImagen.Text = "";
- mskId.Text = "";
- btnSaveToBDD.Enabled=false;
- pictureBox1.Image = null;
- ObtenerFotoDeBDD(Num, @"C:\temp\");
- MessageBox.Show("foto guardada con éxito");
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- }
- // Botón Recuperar imagen desde la base de datos y mostrar dicha imagen en un picturebox
- private void btnLoadFromBDDtoImg_Click(object sender, EventArgs e)
- {
- string str = mskId.Text.Trim();
- int Num;
- bool isNum = int.TryParse(str, out Num);
- if (!isNum)
- {
- MessageBox.Show("Falta introducir un id", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- mskId.Focus();
- }
- else
- {
- try
- {
- lblRutaImagen.Text = "";
- mskId.Text = "";
- btnSaveToBDD.Enabled=false;
- pictureBox1.Image = ObtenerBitmapdeBDD(Num);
- pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement