ورود

نسخه کامل مشاهده نسخه کامل : قراردادن عكس در پايگاه داده



shaima
30-09-2008, 09:57
سلام
يه پروژه دارم و البته مهلت محدود براي انجام! تو رو خدا يكي كمك كنه...
براي ذخيره عكس در پايگاه داده اكسس نوع اون رو ole object قرار ميدم و قاعدتا براي قرار دادن عكس نبايد مشكلي باشه، ولي وقتي عكس رو به ديتابيس مي فرستم ارور مي ده كه نوع داده با نوع فيلد همخوني نداره ! تو خود اكسس هم سعي كردم عكس رو در فيلد مخصوصش قرار بدم ولي بعد از قرار دادن عكس به جاي اسمش مي نويسهpackage. تا جايي كه من مي دونم و البته هر كسي كه ازش پرسيدم راه گذاشتن عكس همينه. يه جايي هم خوندم:

عكس روبه صورت باينري باز كنيد، سپس باينري رو به استرينگ تبديل كنيدو استرينگ رو بگذاريد تو ديتا بيس. بعد هنگام لود فيلد مورد نظر رو نمايش بديد

اين كار رو تو خود برنامه انجام دادم ولي باز هم همون خطاي قبلي رو ميده (به زبان #c)...
لطفا اگه كسي مي تونه كمك كنه... گمونم الان اين شكليم: [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mic_makarti
30-09-2008, 12:17
سلام !
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

_H2_
05-10-2008, 01:09
سلام
میتوانید از نمونه کد VB.Net و C#.Net زیر هم استفاده کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

shaima
06-10-2008, 13:15
سلام
واقعا ممنون به خاطر جواب. هنوز فايل رو نديدم ولي گمونم مشكلم رو حل كنه. دعا كنيد بتونم پروژه ام رو تموم كنم كه بدجوري بهم ريختم:45:

shaima
07-10-2008, 10:53
سلام
مي دونم كه آدماي تازه كار خيلي اعصاب خردكنن ولي خب چه كنم ديگه تا تازه كار نباشي كه به جايي نمي رسي!
اين نمونه برنامه اي كه برام گذاشتيد واقعا عاليه و دقيقا همون كاري رو انجام داده كه من ميخواستم، ولي من سر در نميارم بايد چيكار كنم! تو برنامم اول به كمك يه دكمه browse كاربر عكس رو تو picturebox قرار ميده و بايد با زدن دكمه ثبت عكس به همراه اطلاعات بقيه كنترل ها به ديتا بيس برده بشه من كدم رو اينطوري نوشتم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدالان نمي دونم بايد چيكار كنم! يكي بهم گفته اصلا بايد از Dataset استفاده كني متاسفانه من تو كار با ديتا ست هم مشكل دارم چون نمي دونم بايد چطوري ازش استفاده كنم. ممنون ميشم اگه كمكم كنيد. ديگه دارم ديوونه ميشم...
راستي يه سوال ديگه ممكنه لطف كنيد بگيد قرار دادن عكس تو sql چطوريه؟ اونجا هم بايد از همين راه حل استفاده كرد؟(البته اين سوال يكي ديگه است!)

_H2_
07-10-2008, 22:33
سلام
اگر قصد نمایش اطلاعات در DataGridView را ندارید، اصلاً DataSet را توصیه نمیکنم.
این عمل بسیار کند و با بازده کم است.

شما به راحتی و با دستورات مستقیم سطح Command میتوانید آپدید ها را اعمال کنید.
مثلاً برای ریختن یک فایل داخل فیلدی از دیتابیس همچین دستوری کافی است (چه تصویر باشد و چه هر فایل دیگر)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

شما میتوالنید در همان سورس کد به متد SaveImage دقت کنید.
- اول Connection و Command را می سازیم.
- بعد چک میکنم که سطر وجود دارد یا نه؟ تا بعداً در مورد استفاده UPDATE و INSERT تصمیم بگیریم.
- سپس دو پارامتر دیتای باینری و کلید جدول را add میکنیم.
- بعد شی تصویر Image را با کمک MemoryStream و متد Save به آرایه بایتی ذخیره میکنیم.
- در نهایت با توجه به وجود سطر در خصوص دستور مناسب UPDATE یا INSERT تصمیم میگیریم.
- و در آخر دستور نهایی را با ExecuteNonQuery اجرا میکنیم.


راستي يه سوال ديگه ممكنه لطف كنيد بگيد قرار دادن عكس تو sql چطوريه؟ اونجا هم بايد از همين راه حل استفاده كرد؟
دقیقاً راهش همین است.
فقط کافی است به جای فضای OleDb از SqlClient استفاده کنید.
البته طبیعتا با توجه به قدرت T-SQL در همین مورد میتوان UPODATE و INSERT و چک کردن وجود سطرها همه را در یک T-SQL خلاصه کرد، ولی همین کد عیناً برای sqlserver هم قابل استفاده است.