PDA

View Full Version : مشكل در تبديل System.Byte[] در ساختن يك query ؟



combo_ci
پنج شنبه 18 مهر 1387, 14:47 عصر
سلام
من توي يكي از برنامه هام براي insert كردن تو databse يك رشته شامل insert query رو توليد ميكنم مثل اين كد

INSERT INTO personinfo (srl,name) VALUES ("+tbox1.text+" , "+tbox_Name.text)

و بعد اونو در يك sqlcommand اجرا ميكنم...حالا مشكل من اينه كه وقتي يه عكس رو هم بخوام به اين ترتيب insert query اضافه كنم...براي تبديل عكس به stream از اين كد استفاده كردم

Public Shared Function ImageToStream(ByVal obj As Image) As Byte()
Dim image As New Bitmap(obj)
Dim stream As New MemoryStream
image.Save(stream, ImageFormat.Bmp)
Return stream.ToArray
End Function

و در نهاييت براي توليد insert اين كد

"INSERT INTO personinfo (srl,name,image) VALUES (" + tbox1.text + " , " + tbox_Name.text + " , " + ImageToStream (pic1.Image)+ ")"

اما وقتي دستور insert توليد ميشه به جاي عكس (كه بايد يك byte arraye باشه) فقط مينويسه
System.Byte[] ....

از دوستان كسي ميدونه در توليد يك رشته براي insert چطور ميشه سك عكس (يا byte arraye ) رو جا داد؟
ممنون

rooshan2008
پنج شنبه 18 مهر 1387, 15:18 عصر
سلام ..
اول اینکه فیلدی که می خواید توش عکس پر کنید از چه نوعی انتخاب کردید؟
اگه از نوع imageگزاشتین:
.شما باید از طریق پارامتر عکس رو به جدولتون اضافه کنید
چون شما نمی تونید اطلاعات باینری رو به صورت رشته ای داخل کتیشت قرار بدین

اگه این تابع شما خوب کار نمی کنه من این طوری یکم تغییرش دادم کار کرد
Public Shared Function ImageToStream(ByVal obj As Image) As Byte()
Dim stream As New MemoryStream
obj.Save(stream, ImageFormat.Bmp)
return stream.ToArray
End Function

combo_ci
پنج شنبه 18 مهر 1387, 15:22 عصر
اگر منظورتون از پارامتر stored-Procedure هست كاملا حق با شماست....
اما من توي برنامم يه دلايلي مجبورم يك string از insert بسازم و بعد اجرا كنم اونو.....
كسي راه حل واسه مشكل من به ذهنش نميرسه؟

combo_ci
پنج شنبه 18 مهر 1387, 20:32 عصر
راهشو پيدا كردم :دي
ميشه همون كاري كه .net 2005 توي نسبت دادن متغير ها با tabel adapter ها استفاده ميكنه استفاده كرد