PDA

View Full Version : خطای Implicit conversion from data type varchar to varbinary(max) is not allowed در ذخیره عکس



mansour161
دوشنبه 12 مرداد 1394, 22:19 عصر
با سلام
کلیه سایتها ومطالب رو گشتم و بعدا این تایپک رو ایجاد کردم

بنده در پایگاه داده فیلدهایی دارم که یکی از انها برای عکس هست که به صورت varbinariy (max) می باشد
من می خواستم با استفاده از data tabel کار ذخیره رو انجام بدم

تابع تبدیل به بایت
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}



تبدیل عکس به بایت

byte[] arrpic = ImageToByte(pictureBox1.Image);


ذخیر در پایگاه داده

DB_Con dbc = new DB_Con();
DataTable df = new DataTable();

dbc.SetData("INSERT INTO moshakhasat VALUES ('" + t1.Text + "','" + t2.Text + "','" + c1.Text + "','" + c2.Text + "','" + c3.Text + "','" + c4.Text + "','" + t3.Text + "','" +arrpic + "','" + t4.Text + "')");




اخطار داده شده :
Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.

میگه تبدیل کن به باینری تا ذخیره بشه
حالا چطوری ؟؟؟؟؟؟
اونشم شما راهنمایی کنید
ممنون میشم

davidrobert
دوشنبه 12 مرداد 1394, 23:00 عصر
بفرمائید این هم دستور ذخیره تصویر به صورت باینری
MemoryStream ms = new MemoryStream();
try
{
PicShowImage.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
}
catch
{

}
byte[] arrPic = ms.GetBuffer();
ms.Close();
dbm.Connect();
dbm.cmd = new SqlCommand();
dbm.cmd.Connection = dbm.con;
dbm.cmd.CommandText = "INSERT INTO Tbl_Company (C_Logo) VALUES (@C_Logo)";
dbm.cmd.Parameters.AddWithValue("@C_Logo", SqlDbType.Image).Value = arrPic;
dbm.cmd.ExecuteNonQuery();
dbm.Disconnect();

mansour161
سه شنبه 13 مرداد 1394, 00:04 صبح
عزیز دست گلت درد نکنه
ولی میخواستم با دیتا تیبل انجامش بدم به همین خاطر
رو این کدی که قرار دادم اصرار داشتم
دوستان عزیزم راهنمایی کنید ممنون میشم

Mahmoud.Afrad
سه شنبه 13 مرداد 1394, 00:11 صبح
در ذخیره استفاده از دیتاتیبل معنا نداره(شما هم از دیتاتیبل بعد از ساختنش هیچ استفاده ای نکردید)
چک کنید ترتیب مقادیر با ترتیب ستونهای جدول یکی باشه. برای جلوگیری از بروز این مشکل ستونها رو جلوی نام جدول قید کنید و اینکه حتما از پارامترها استفاده کنید.