نحوه ذخیره و بازیابی تصویر در بانک اطلاعاتی
بسمه تعالی
با سلام
می خواستم تصاویر مورد نظز کاربرم را وارد باانک اطلاعاتی بکنم به نظر شما از چه بانک اطلاعاتی استفاده کنم که بهروری بیشتر داشته باشه
آیا باید همه در یک بانک ذخیره بشه و یا می شه بانک های جدید نیز توسط برنامه ایجاد کرد
اگر سورسی در این زمینه داشته باشید ممنون می شم
با تشکر
ذخیره عکس در پایگاه اکسس با oledb
کد مربوط به باز کردن عکس
نقل قول:
openFileDialog1.ShowDialog();
textBox1.Text = openFileDialog1.FileName;
pictureBox1.Image = Bitmap.FromFile(openFileDialog1.FileName);
کد مربوط به ذخیره در اکسس
MemoryStream s ;
s = newMemoryStream();
pictureBox1.Image.Save(s,System.Drawing.Imaging.ImageFormat.Bmp);
DataRow dr = ds.Tables[0].NewRow();
dr["name"] = "dskkdsjkdsj";
dr["pic"] = s.ToArray();
ds.Tables[0].Rows.Add(dr);
da.Update(ds);
کد مربوط به باز کردن عکس از پایگاه اکسس
object o = ds.Tables[0].Rows[0]["pic"];
MemoryStream s;
s = newMemoryStream( (byte[])(o));
pictureBox2.Image = Bitmap.FromStream(s);
هرکی مشکل داشت بگید تا رفع کنم با تشکر از استاد گلم آقای مرجوی
کد کامل ذخیره و بازیابی عکس از sql
با سلام خدمت دوستان عزیز و تشکر مخصوص از دو دوست عزیزمون iranrose63 و hdv212
خود من برای ذخیره عکس در پایگاه داده و بازیابی اون و نمایش در یک pictureBox با کمک مطالب موجود در این تایپیک و صرف وقت چند ساعته تونستم این کار رو انجام بدم
و خواستم کد اون رو اینجا قرار بدم که دوستانی که مثله من تازه شروع به کار کردن و احتیاج به توضیحات تکمیلی و بالاخص کد کامل برنامه دارن بتونن از این مطلب استفاده کنن.
البته جا داره دوباره بر این موضوع تاکید داشته باشم که این کد برگرفته از مطالب دوستان در همین تایپیک می باشد و دوباره ازشون کماله تشکر رو دارم. :تشویق:
کد های بخش اضافه کردن عکس:
لازم به توضیح که برای تعیین نوع فیلد photo در پایگاه داده من هر دو نوع image و varbinary max
رو امتحان کردم و ظاهرا مثله هم جواب دادن
using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
using System.Drawing;
namespace BlobSQLCETest
{
public partial class Form1 : Form
{
private System.Windows.Forms.PictureBox PictureBox1;
public Form1()
{
InitializeComponent();
}
private void AddEmployee(string photoFilePath, string connectionString)
{
byte[] photo = GetPhoto(photoFilePath);
{
SqlConnection objConnection = new SqlConnection("Data Source=taba;Initial Catalog=webdata;Integrated Security=True;");
SqlCommand command = new SqlCommand("INSERT INTO Table2 (Photo) " + "Values(@Photo)", objConnection);
command.Parameters.Add("@Photo", SqlDbType.Image, photo.Length).Value = photo;
objConnection.Open();
command.ExecuteNonQuery();
}
}
private byte[] GetPhoto(string filePath)
{
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] photo = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
return photo;
}
private void b_insert_Click(object sender, EventArgs e)
{
AddEmployee(@"C:\photo1.jpg", @"Data Source='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\webdata.mdf'");
کدهای بخش بازیابی و رویت عکس
private void showphoto()
{
SqlConnection objConnection = new SqlConnection("Data Source=taba;Initial Catalog=webdata;Integrated Security=True;");
DataSet objDataSet = new DataSet();
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.CommandText = "SELECT photo FROM Table2";
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objDataAdapter.SelectCommand.Connection = objConnection;
objDataAdapter.Fill(objDataSet, "Table2");
DataView objDataView = new DataView(objDataSet.Tables["Table2"]);
objConnection.Open();
byte[] arrPicture = ((byte[])(objDataSet.Tables[0].Rows[0][0] ));
MemoryStream ms = new MemoryStream(arrPicture);
pictureBox1.Image = Image.FromStream(ms);
PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
PictureBox1.BorderStyle = BorderStyle.Fixed3D;
PictureBox1.BringToFront();
}
private void b_show_Click(object sender, EventArgs e)
{
showphoto();
}
}
امیدوارم این مطب برای دوستان مفید واقع شه.
ذخیره ی Image در SQL بصورت Binary
دوستان من میخوام Image رو تو SQL بصورت باینری ذخیره کنم بعد دوباره بخونمش و تو فرمم نشونش بدم . ممنون میشم راهنمایی کنید . ممنون میشم که یه راهکارم واسه ذخیره عکس وقتی زیاده بدین . منظور اینکه اصلا ذخیره تو DataBase درسته ؟ چون یه بحث دیگه ای که هست نمیخوام کاربری که داره از سیستم استفاده میکنه به عکسا دسترسی داشته باشه ( اینو گفتم که نگین مسیر عکس تو DB ذخیره کنم و خود عکسارو تو یه فلدر رو Hard )
ممنون :لبخندساده:
چگونگی ذخیره یک عکس در بانک و بازیابی آن؟
در بانک اطلاعاتی یک فیلد از نوع OLE Object درست کردم که عکس در خود دخیره می کند
برای این کار یک متغییر از نو ع Object در C# استفاده کرده ام بعد در موقع خودن این فیلد دچار مشکل هستم
pictureBox1.Image = ds.background
background
متغییر از نوع Object است در این خط error می دهد
برای convert به عکس از چه متدی باید استفاده کرد که این عکس را نمایش بده.
در background خود عکس دخیره است که از بانک خونده می شود