PDA

View Full Version : سوال: بهترین روش ذخیره عکس در دیتابیس



tara1367
چهارشنبه 26 شهریور 1393, 10:15 صبح
سلام
من خیلی راجع به این موضوع سرچ کردم. ولی متاسفانه هر کسی یه نظری داده و به نتیجه ای نرسیدم.
من برنامه ای نوشتم که تحت شبکه هست و برای 4 شرکت مختلف در سطح شهر که با هم در ارتباطند.
بنابراین سرعت برنامه و فراخوانی اطلاعات دیتابیس خیلی برام مهمه. یکی از تکه برنامه ها اینه که عکس اسکنر رو اسکن می کنه و در دیتا بیس ذخیره میکنه. ولی سرعت بازیابی عکس ها خیلی پایین میاد. ممنون میشم از دوستانی که اطلاعات کامل و دقیق از بهترین روش و استفاده از بهترین نوع داده عکس در دیتابیس رو دارند.
کد ذخیره عکس اسکن شده در picturebox:


MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
Byte[] arrPic = new Byte[ms.Length];
ms.Position = 0;
ms.Read(arrPic, 0, Convert.ToInt32(ms.Length));

SqlCommand cmd = new SqlCommand("INSERT INTO TScan (UserId,PName,Company,PGroup,PDate," +
"PicName,Pic,Des) VALUES('" + txtId.Text + "','" + txtFname.Text + ' ' + txtLname.Text +
"','" + cmbCompanyName.Text + "','" + cmbGroup.Text + "','" +
codes.MergeTexboxesForDate(txtday, txtmonth, txtyear) + "',@PicName,@Pic,'" + txtDes.Text + "')",
conn = new SqlConnection(codes.ReturnConnectionstring()));
//cmd.Parameters.Add("@FCode", SqlDbType.Int).Value = sttCode;
cmd.Parameters.Add("@PicName", SqlDbType.NVarChar, 400).Value = strPName;
cmd.Parameters.Add("@Pic", SqlDbType.VarBinary).Value = arrPic;


conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("ضمیمه ثبت گردید");
ShowData();
conn.Close();





کد فراخوانی عکس از دیتابیس:


byte[] arrpic = (byte[])(dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells["Pic"].Value);
MemoryStream ms = new MemoryStream(arrpic);
pictureBox1.Image = Image.FromStream(ms);

fakhravari
چهارشنبه 26 شهریور 1393, 10:26 صبح
:چشمک::چشمک:

دلتنگ اسمان
چهارشنبه 26 شهریور 1393, 12:24 عصر
:چشمک::چشمک:

سلام
هنگام اجرا روی کاربر sa خطا میده . چطوری میشه رفعش کرد؟

fakhravari
پنج شنبه 27 شهریور 1393, 10:10 صبح
کانکشن استرینگ خودتون جایگزین کنید