PDA

View Full Version : آوردن عکس در برنامه و ذخیره آن در sql



baharnaz
چهارشنبه 18 فروردین 1389, 14:26 عصر
سلام
می خواهم توی برنامه بعد از فشردن باتن، (open file) باز شود و از داخل کامپیوتر عکسی را انتخاب کنم و آن عکس در برنامه بیاید.وبعد از ذخیره کردن، عکس هم در جدولم در sql ذخیره شود. برای ذخیره عکس در sql داخل جدول و نوشتن کد برای باز شدن (open file) برای آوردن عکس لطفاً من را راهنمایی کنید؟

Shahram_Shobeiri
چهارشنبه 18 فروردین 1389, 14:48 عصر
این یک مثال برای بازکردن عکس به روش مورد نظر شما است

baharnaz
چهارشنبه 18 فروردین 1389, 15:14 عصر
برای این که محل عکس در برنامه مشخص باشد یعنی قبل از آوردن عکس یک کادر خالی برای گذاشتن عکس در آن در برنامه باشد باید چه کار کنم؟

Shahram_Shobeiri
چهارشنبه 18 فروردین 1389, 15:16 عصر
با خاصیت borderstyle پیکچرباکس کار کنید.

baharnaz
چهارشنبه 18 فروردین 1389, 15:34 عصر
برای ذخیره عکس در جدولم در sql باید چه کدی را بنویسم؟

ali_ahr7
چهارشنبه 18 فروردین 1389, 19:02 عصر
سلام پيشنهاد ميكنم آدرس عكس رو ذخيره كن نه خود عكس رو.و براي فراخونيش هم به برنامه بگو بره آدرس عكس رو از ديتابيس بخونه و بعد اونو لود كنه.موفق باشي

baharnaz
چهارشنبه 18 فروردین 1389, 19:21 عصر
آدرس عکس ممکنه عوض بشه.یه راهنمایی بکنین که چه جوری خود عکس را ذخیره کنم در sql ؟

pouyansaraf
چهارشنبه 18 فروردین 1389, 19:32 عصر
من دارم این روش را یاد میگیرم
ولی توضیح کلی ان به این صورت است که عکس را به صورت باینری ، بیت به بیت در اکسس ذخیره باید کرد.
احتمالا در sql نیز به همین صورت است

Shahram_Shobeiri
چهارشنبه 18 فروردین 1389, 22:15 عصر
راهی که من استفاده می کنم اینه که میام عکس ها رو از مسیری که کاربر وارد می کنه لود و در یک مسیر بخصوص با نامی یکتا (مثلا یک PK) سیو می کنم. و هر وقت به اون عکس نیاز داشتم کافیه که به مسیر عکس ها رفته و فایلی با عنوان PK مربوطه را لود کنم.

programmer2010
پنج شنبه 19 فروردین 1389, 01:06 صبح
با استفاده از کلاس my عکس رو به آرایه ای از بایت تبدیل کنید بعد اون رو توی جدولی در فیلدی که دیتاتایپش image یا varbinary(max) هست ذخیره کنید.

armin8651
پنج شنبه 19 فروردین 1389, 09:39 صبح
این لینک رو ببین:

http://barnamenevis.org/forum/showthread.php?t=204610

hero4000
پنج شنبه 19 فروردین 1389, 09:53 صبح
دوست عزيز از کد زير ميتوني استفاده کني البته نام فيلدهاي بانک شما حتما متفاوت است لطفا تغيير دهيد



filebyte = My.Computer.FileSystem.ReadAllBytes(filename)

command.CommandText = "insert into [names] (name,tel,mobile,fax,addres,[desc],[group],other1,other2,other3,other4,filepic,filename,pics mall) values (" & _
"@TextBox1.Text ,@TextBox2.Text ,@TextBox3.Text ,@TextBox4.Text ,@TextBox5.Text , @TextBox6.Text ,@ComboBox1.SelectedValue ,@TextBox7.Text ,@TextBox8.Text ,@TextBox9.Text ,@TextBox10.Text,@filepic,@filename,@picsmall)"
command.Parameters.Clear()
command.Parameters.Add("@TextBox1.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox1.Text
command.Parameters.Add("@TextBox2.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox2.Text
command.Parameters.Add("@TextBox3.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox3.Text
command.Parameters.Add("@TextBox4.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox4.Text
command.Parameters.Add("@TextBox5.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox5.Text
command.Parameters.Add("@TextBox6.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox6.Text
command.Parameters.Add("@ComboBox1.SelectedValue", OleDb.OleDbType.BigInt, 4).Value = ComboBox1.SelectedValue
command.Parameters.Add("@TextBox7.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox7.Text
command.Parameters.Add("@TextBox8.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox8.Text
command.Parameters.Add("@TextBox9.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox9.Text
command.Parameters.Add("@TextBox10.Text", OleDb.OleDbType.VarChar, 255).Value = TextBox10.Text
command.Parameters.Add("@filepic", OleDb.OleDbType.VarBinary, filebyte.Length).Value = filebyte
command.Parameters.Add("@filename", OleDb.OleDbType.VarChar, 50).Value = filename.Substring(Strings.InStrRev(filename, "\"), filename.Length - Strings.InStrRev(filename, "\"))
command.Parameters.Add("@picsmall", OleDb.OleDbType.VarBinary, filebyte2.Length).Value = filebyte2

ebrahimv
پنج شنبه 19 فروردین 1389, 10:06 صبح
می تونی خیلی راحت با امکانات خود برنامه این کار رو انجام بدی
اگه در Sql نوع فیلد خود را از نوع ایمیج انتخاب کرده باشی فیلد شما در قسمت دیتا سورس برنامه به صورت یک پیکچر باکس دیده میشه و کافیه اونو تو صفحه خودتون درگ کنید
بعد هر عکسی که در این پیکچر باکس باشد در پایگاه داده ذخیره می شود.
البته برای ایجاد و ویرایش فیلدها باید از TabalAdaptor و Bindig استفاده کنید

ali_ahr7
پنج شنبه 19 فروردین 1389, 17:56 عصر
ولي آقا من بازم ميگم الكي حجم ديتابيس رو بالا نبرواگه اطلاعات محزمانه نيست آدرس اونارو ذخيره كن
البته اگه برنامت كوچيكه روش پيشنهاديه خودتو بكار ببر ولي اگه تعداد ركورد ها بالاست هموني رو كه من ميگم امتحان كن.

pouyansaraf
جمعه 20 فروردین 1389, 11:35 صبح
بالا بردن حجم دیتا بیس نیست.
من فکر کنم مثلا اگر برنامه ای باشد که در آن آدرس عکس ها ذخیره بشه باید همیشه cd در cd-rom باشه و یا کل عکس ها رو تو هارد ذخیره کنه که جالب نیست.
می ارزه به بالا بردن حجم دیتا بیس که فقط همون فایل در هارد کپی بشه.
تازه برنامه من نیاز داره تا عکس ها رو هر چند وقت به چند وقت از تو وبسایت بخونه و اگر ورژن جدیدش بود دیتا بیس رو آپگرد کنه
این جوری راحت تره