Create an access database like the picture:
Design the base form:
Create the CSharp (C#) class:
using System; using System.Data.OleDb; using System.IO; namespace TyroDeveloper.Class { public class AccessPictures { string _connStr = ""; public string ConnStr { get { return _connStr; } set { _connStr = value; } } public bool SetPicture(string tableName, string fieldId, string fieldIdValue, string targetFieldName, string fileName){ OleDbConnection conn = new OleDbConnection(_connStr); try { System.IO.FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); System.IO.BinaryReader br = new System.IO.BinaryReader(fs); byte[] picture = new byte[fs.Length]; br.Read(picture, 0, (int)fs.Length); br.Close(); fs.Close(); string SQL = String.Format("UPDATE [{0}] "+ " SET [{1}]=@IMG WHERE [{2}]=@ID", tableName, targetFieldName, fieldId); conn.Open(); OleDbCommand comm = new OleDbCommand(SQL, conn); //IMAGE OleDbParameter parImagen = new OleDbParameter("@IMG", OleDbType.VarBinary, picture.Length); parImagen.Value = picture; comm.Parameters.Add(parImagen); //ID OleDbParameter parId = new OleDbParameter("@ID", fieldIdValue); comm.Parameters.Add(parId); comm.ExecuteNonQuery(); return (true); } catch (Exception ex) { throw (ex); } finally { conn.Close(); } } public byte[] GetPicture(string targetFieldName,string fieldIdName, string tableName, string fieldIdValue){ OleDbConnection conn = new OleDbConnection(_connStr); try { conn.Open(); string SQL = string.Format("SELECT [{0}], [{1}] "+ " FROM [{2}] WHERE [{1}]=@ID AND [{0}] IS NOT NULL", targetFieldName, fieldIdName, tableName); OleDbCommand comm = new OleDbCommand(SQL, conn); OleDbParameter parId = new OleDbParameter("@ID", fieldIdValue); comm.Parameters.Add(parId); OleDbDataReader dr = null; dr = comm.ExecuteReader(); byte[] aBytes = null; if (dr.Read()) { aBytes = (byte[])dr[targetFieldName]; } dr.Close(); return (aBytes); } catch (Exception ex) { throw (ex); } finally { conn.Close(); } } } }
The code for the "Set Picture" button:
private void btnSetPicture_Click(object sender, EventArgs e) { try { OpenFileDialog m_OpenFile = new OpenFileDialog(); m_OpenFile.InitialDirectory = Application.ExecutablePath.ToString(); m_OpenFile.Title = "Buscar Imágenes"; m_OpenFile.Filter = "Todos los archivos(*.*)|*.*|" + "Imagenes JPG (*.jpg)|*.jpg|" + "Imagenes GIF (*.gif)|*.gif"; m_OpenFile.FilterIndex = 2; if (m_OpenFile.ShowDialog() == DialogResult.OK) { Class.AccessPictures pic = new Class.AccessPictures(); pic.ConnStr = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;"+ "Data Source={0};"+ "Persist Security Info=False", "D:\\DOCS\\tyrodeveloper\\BlogPubCSharp\\BlogPubCSharp.accdb"); pic.SetPicture("CUSTOMER", "ID_CUSTOMER", txtId.Text, "LOGO", m_OpenFile.FileName); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
The code for the "Get Picture":
private void btnGetPicture_Click(object sender, EventArgs e) { try { Class.AccessPictures pic = new Class.AccessPictures(); pic.ConnStr = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;"+ "Data Source={0};Persist Security Info=False", "D:\\DOCS\\tyrodeveloper\\BlogPubCSharp\\BlogPubCSharp.accdb"); picAccessPicture.Image = Image.FromStream(new MemoryStream(pic.GetPicture("LOGO", "ID_CUSTOMER", "CUSTOMER", txtId.Text))); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Before run the program, you must add records to database.
Please Clic on +1
No hay comentarios:
Publicar un comentario