PDA

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



sg.programmer
چهارشنبه 09 آبان 1397, 17:50 عصر
سلام
من وقتی میخوام عکس را در دیتابیس ذخیره کنم خطای زیر صادر میشه - خیلی کدها را بررسی کردم همه با این خطا مواجه میشن. هم از کدهای توی اینترنت و هم کد های توی این سایت.
فیلدها را هم از نوع و Image و هم از نوع این ساختم varbinary(MAX)
اس کیو ال 2017


OpenFileDialog fop = new OpenFileDialog();
fop.InitialDirectory = @"C:";
fop.Filter = "[JPG,JPEG]|*.jpg";
if (fop.ShowDialog() == DialogResult.OK)
{
FileStream FS = new FileStream(@fop.FileName, FileMode.Open, FileAccess.Read);
byte[] img = new byte[FS.Length];
FS.Read(img, 0, Convert.ToInt32(FS.Length));



db.DoCommand("Insert into tbl_Azmayeshgah (AZmayeshgahPic) values ( " + img + " )");




متن خطا


System.Data.SqlClient.SqlException: 'An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
Incorrect syntax near ''.'

رامین مرادی
پنج شنبه 10 آبان 1397, 08:44 صبح
سلام
من وقتی میخوام عکس را در دیتابیس ذخیره کنم خطای زیر صادر میشه - خیلی کدها را بررسی کردم همه با این خطا مواجه میشن. هم از کدهای توی اینترنت و هم کد های توی این سایت.
فیلدها را هم از نوع و Image و هم از نوع این ساختم varbinary(MAX)
اس کیو ال 2017


OpenFileDialog fop = new OpenFileDialog();
fop.InitialDirectory = @"C:";
fop.Filter = "[JPG,JPEG]|*.jpg";
if (fop.ShowDialog() == DialogResult.OK)
{
FileStream FS = new FileStream(@fop.FileName, FileMode.Open, FileAccess.Read);
byte[] img = new byte[FS.Length];
FS.Read(img, 0, Convert.ToInt32(FS.Length));



db.DoCommand("Insert into tbl_Azmayeshgah (AZmayeshgahPic) values ( " + img + " )");




متن خطا


System.Data.SqlClient.SqlException: 'An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
Incorrect syntax near ''.'




من هم همینجوری سعی کردم ارسال کنم متاسفانه نشد . سعی کنید به صورت پارامتر ارسال کنید.
من اینشکلی عمل کردم


DataAccess _DataAccess = new DataAccess();

String sBLOBFilePath = Path;
FileStream fsBLOBFile = new FileStream(sBLOBFilePath, FileMode.Open, FileAccess.Read);
Byte[] bytBLOBData = new Byte[fsBLOBFile.Length];
fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length);
fsBLOBFile.Close();
string sql = "Update [PersonnelTbl] SET EmzaImage=@Image where PersonnelId=" + PersonnelId;

SqlParameter prm = new SqlParameter("@Image", SqlDbType.VarBinary, bytBLOBData.Length, ParameterDirection.Input, false,
0, 0, null, DataRowVersion.Current, bytBLOBData);
_DataAccess.Execute(sql,prm);




DataAccess کلاسیه که وظیفه اجرای کامند های ADO رو داره مثل همون db خودتون. اون قسمتشو ویرایش کنید.قسمت افزودن پارامتر به کامند هم ننوشتم خودتون زحمتشو بکشید