PDA

View Full Version : مبتدی: ذخیره عکس در دیتابیس اکسس



hadi vafaii
سه شنبه 24 شهریور 1394, 01:31 صبح
سلام عرض میکنم خدمت دوستان و اساتید گرامی
یه مشکل دارم در زمینه ذخیره عکس در دیتابیس(اکسس)
من برای ذخیره اطلاعاتم تو دیتابیس از کد زیر استفاده کردم که داخل یه کلاس قرار دادم

#region setconnection
public static OleDbConnection connection()
{
OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=|datadirectory|\\db.mdb;persist security info = false");
return con;

}
#endregion
#region new Record
public static void newuser(string Id, string name, string famil, string pedar, string shenasname, string codemeli, string tavalod, string tell1, string tell2, string adress, string tarikh, string moaref, string elat)
{
OleDbConnection con = connection();
string a = "insert into tbl1 values('" + Id + "','" + name + "','" + famil + "','"+pedar+"','"+shenasname+"','"+codemeli+"','"+tavalod+"','"+tell1+"','"+tell2+"','"+adress+"','"+tarikh+"','"+moaref+"','"+elat+"')";
OleDbCommand comand = new OleDbCommand(a, con);
con.Open();
comand.ExecuteNonQuery();
con.Close();
}

#endregion

و میخوام قابلیت اضافه کردن عکس رو هم داشته باشم و سرچ کردم و به این کد رسیدم و مجبور شدم کدمو به شکل زیر تغییر بدم



private string str1;
private byte[] ConvertImageToByte(string ImageLocation)
{
FileStream fs = new FileStream(ImageLocation, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] picture = null;
FileInfo fInfo = new FileInfo(ImageLocation);
long numBytes = fInfo.Length;
picture = br.ReadBytes(Convert.ToInt32(numBytes));
return picture;
}


private void pictureBox1_DoubleClick(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
pictureBox1.Image = System.Drawing.Image.FromFile(openFileDialog1.File Name);
str1 = openFileDialog1.FileName;

}
}

try
{

MemoryStream ms = new MemoryStream();
try
{
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);

}
catch { }
byte[] arrPic = ms.GetBuffer();
ms.Close();
OleDbConnection cn = new OleDbConnection();
cn = DB.connection();
cn.Open();

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;

cmd.CommandText = "insert into tbl1 (ID,name,famil,pedar,shenasname,codemeli,tavalod,t ell1,tell2,adress,tarikh,moaref,elat,ax) values (@a1,@a2,@a3,@a4,@a5,@a6,@a7,@a8,@9,@10,@a11,@a12, @a13,@a14)";
cmd.Parameters.AddWithValue("@a1", b);
cmd.Parameters.AddWithValue("@2", txtname.Text);
cmd.Parameters.AddWithValue("@3", txtfamil.Text);
cmd.Parameters.AddWithValue("@a4", txtpedar.Text);
cmd.Parameters.AddWithValue("@a5", txtshenasname.Text);
cmd.Parameters.AddWithValue("@a6", txtmeli.Text);
cmd.Parameters.AddWithValue("@a7", txttavalod.Text);
cmd.Parameters.AddWithValue("@a8", txttell.Text);
cmd.Parameters.AddWithValue("@a9", txtmobile.Text);
cmd.Parameters.AddWithValue("@a10", txtadres.Text);
cmd.Parameters.AddWithValue("@a11", txtdate.Text);
cmd.Parameters.AddWithValue("@a12", txtmoaref.Text);
cmd.Parameters.AddWithValue("@a13", txtmoraje.Text);

cmd.Parameters.Add("@a14", OleDbType.Binary).Value = arrPic;
cmd.ExecuteNonQuery();
cn.Close();

MessageBox.Show("ثبت شد");
}
catch
{
MessageBox.Show("شماره درج شده تکراری می باشد");
}


refresh();
}
حالا اگه بخوام مثل کد اولی که قرار دادم بالا انجامش بدم چیکار باید بکنم
ممنون از راهنماییتون

hadi vafaii
سه شنبه 24 شهریور 1394, 02:13 صبح
از دوستان کسی نبود کمک کنه