PDA

View Full Version : ذخیره تصویر در دیتابیس اکسس



R_khaleghi
جمعه 10 خرداد 1392, 22:59 عصر
سلام بچه ها.
من یه برنامه نوشتم که عکس رو ذخیره میکنه و بازیابی هم میکنه فقط میخوام وقتی عکس رو با شماره آن ذخیره میکنم واسه بازیابیش هروقت آی دی یه عکس رو دادم همون رو بازیابی کنی ولی نمیدونم چجور باید این کار رو انجام بدم.
اگر کسی میدونه کمک کنه.
با تشکر


https://www.dropbox.com/sh/fhsn5m98ns8tzb7/0qQe4WcJH6

alexmcse
شنبه 11 خرداد 1392, 11:49 صبح
دوست عزیز کار خیلی راحته
یک فیلد در دیتابیس بنام مثلا شماره عکس میسازی زمانی که عکس را ذخیره میکنی یک شماره به آن میدهی بعدا موقع باز یابی شرط میگذاری کا اگر شماره وارد شده برابر باشد با شماره های ذخیره شده در دیتابیس آنرا بازیابی کند

R_khaleghi
شنبه 11 خرداد 1392, 11:55 صبح
دوست عزیز کار خیلی راحته
یک فیلد در دیتابیس بنام مثلا شماره عکس میسازی زمانی که عکس را ذخیره میکنی یک شماره به آن میدهی بعدا موقع باز یابی شرط میگذاری کا اگر شماره وارد شده برابر باشد با شماره های ذخیره شده در دیتابیس آنرا بازیابی کند

سلام.
همین کار هم انجام دادم ولی نشد.
برنامه ای که گذاشتم دیدین؟

R_khaleghi
شنبه 11 خرداد 1392, 12:04 عصر
این عکس فرم برنامه هست:
104959

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using System.Data.OleDb;
using EMsgBox;
using System.Reflection;
using System.Diagnostics;

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Setad Pishgiry.mdb");
OleDbDataAdapter da;
DataSet ds = new DataSet();
string s1;

private void Btn_Show_Click(object sender, EventArgs e)
{
s1 = "Select * From Tb_Pic Where ID='"+textBox1.Text+"'";
OleDbDataAdapter da = new OleDbDataAdapter(s1, con);
DataSet ds = new DataSet();

da.Fill(ds, "Tb_Pic");
if (textBox1.Text != "")
{
if (ds.Tables["Tb_Pic"].Rows.Count != 0)
{
OleDbDataAdapter da2 = new OleDbDataAdapter("Select * from Tb_Pic", con);
DataSet ds2 = new DataSet();
da2.Fill(ds2);
byte[] b = (byte[])ds2.Tables[0].Rows[Convert.ToInt32(textBox1.Text)][0];
MemoryStream mem = new MemoryStream(b);
Image im = Image.FromStream(mem);
pictureBox1.Image = im;
}
}
else
{
Msg.Show("Please Enter The Pic Number", "Error", MsgIcon.Error, MsgButton.Ok);
}
}

private void Btn_Add_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
Image im = null;
dlg.Filter = "All Pictures |*.bmp;*.gif;*.jpg|Bitmaps|*.bmp";
if (dlg.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = dlg.FileName;
textBox3.Text = dlg.FileName;
}
}

private void Btn_Save_Click(object sender, EventArgs e)
{
Image im = null;
if (textBox3.Text != "")
{
s1 = "Select * From Tb_Pic Where ID='" + textBox2.Text + "'";

pictureBox1.ImageLocation = textBox3.Text;
im = new Bitmap(pictureBox1.ImageLocation);
MemoryStream mstr = new MemoryStream();
im.Save(mstr, im.RawFormat);
byte[] arrimage = mstr.GetBuffer();
OleDbDataAdapter da = new OleDbDataAdapter("Select * from Tb_Pic", con);
DataSet ds = new DataSet();
da.Fill(ds);
DataRow dr = ds.Tables[0].NewRow();
dr[0] = arrimage;
dr[1] = textBox2.Text;
ds.Tables[0].Rows.Add(dr);

OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
da.Update(ds.Tables[0]);
textBox3.Clear();
pictureBox1.BackgroundImage = null;
}
else
{
Msg.Show("Please Enter The Pic ", "Error", MsgIcon.Error, MsgButton.Ok);
}

}
}
}


بانک اطلاعاتی هم با اکسس هست.
اینم یه عکس از بانکمه:
104960

با تشکر

R_khaleghi
شنبه 11 خرداد 1392, 16:55 عصر
کسی نیست که بتونه جوابم رو بده؟

khokhan
شنبه 11 خرداد 1392, 18:00 عصر
کسی نیست که بتونه جوابم رو بده؟
درود

منظورتون از بازیابی همون فیلتر نمودن بر اساس id عکسه دیگه مگه نه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

R_khaleghi
شنبه 11 خرداد 1392, 19:15 عصر
آره. وقتی که آی دی عکس رو زدم عکس مورد نظر نمایش بده.

khokhan
شنبه 11 خرداد 1392, 19:31 عصر
آره. وقتی که آی دی عکس رو زدم عکس مورد نظر نمایش بده.


بفرما عزیز درست شد

البته توجه داشته باشین که من فقط یک عکس توی بانک ذخیره کردم با آی دی1 بقیه رو هم خودتون زحمتش رو بکشین ذخیره کنین و مشاهده کنین وحالشو ببرین :لبخند::لبخند::لبخند:

R_khaleghi
شنبه 11 خرداد 1392, 23:30 عصر
سلام دوست گرامی.

در ابتدا تشکر میکنم از کمکتون.
ولی اگر آی دی نا مرتب وارد بشه این برنامه کار نمیکنم. مثلا کد ملی بخوایم بزنم این جور کار نمیکنه.
میخوام ارتباط بدم به جدول member که داخل بانک اطلاعاتی دارمش.
واسه این راهی بنظرتون میرسه؟

alexmcse
شنبه 11 خرداد 1392, 23:35 عصر
این عکس فرم برنامه هست:
104959

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using System.Data.OleDb;
using EMsgBox;
using System.Reflection;
using System.Diagnostics;

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Setad Pishgiry.mdb");
OleDbDataAdapter da;
DataSet ds = new DataSet();
string s1;

private void Btn_Show_Click(object sender, EventArgs e)
{
s1 = "Select * From Tb_Pic Where ID='"+textBox1.Text+"'";
OleDbDataAdapter da = new OleDbDataAdapter(s1, con);
DataSet ds = new DataSet();

da.Fill(ds, "Tb_Pic");
if (textBox1.Text != "")
{
if (ds.Tables["Tb_Pic"].Rows.Count != 0)
{
OleDbDataAdapter da2 = new OleDbDataAdapter("Select * from Tb_Pic", con);
DataSet ds2 = new DataSet();
da2.Fill(ds2);
byte[] b = (byte[])ds2.Tables[0].Rows[Convert.ToInt32(textBox1.Text)][0];
MemoryStream mem = new MemoryStream(b);
Image im = Image.FromStream(mem);
pictureBox1.Image = im;
}
}
else
{
Msg.Show("Please Enter The Pic Number", "Error", MsgIcon.Error, MsgButton.Ok);
}
}

private void Btn_Add_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
Image im = null;
dlg.Filter = "All Pictures |*.bmp;*.gif;*.jpg|Bitmaps|*.bmp";
if (dlg.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = dlg.FileName;
textBox3.Text = dlg.FileName;
}
}

private void Btn_Save_Click(object sender, EventArgs e)
{
Image im = null;
if (textBox3.Text != "")
{
s1 = "Select * From Tb_Pic Where ID='" + textBox2.Text + "'";

pictureBox1.ImageLocation = textBox3.Text;
im = new Bitmap(pictureBox1.ImageLocation);
MemoryStream mstr = new MemoryStream();
im.Save(mstr, im.RawFormat);
byte[] arrimage = mstr.GetBuffer();
OleDbDataAdapter da = new OleDbDataAdapter("Select * from Tb_Pic", con);
DataSet ds = new DataSet();
da.Fill(ds);
DataRow dr = ds.Tables[0].NewRow();
dr[0] = arrimage;
dr[1] = textBox2.Text;
ds.Tables[0].Rows.Add(dr);

OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
da.Update(ds.Tables[0]);
textBox3.Clear();
pictureBox1.BackgroundImage = null;
}
else
{
Msg.Show("Please Enter The Pic ", "Error", MsgIcon.Error, MsgButton.Ok);
}

}
}
}


بانک اطلاعاتی هم با اکسس هست.
اینم یه عکس از بانکمه:
104960

با تشکر

دوست گرامی شما از دستور سلکت استفاده کردی نه اینزرت ونه آپدیت
در برنامه ای که گذاشتی
برنامه شما سلکت میکند
آقای khokhan زحمت مثال در این مورد را کشیده اند تشکر میکنم از آقای khokhan

khokhan
یک شنبه 12 خرداد 1392, 00:07 صبح
سلام دوست گرامی.

در ابتدا تشکر میکنم از کمکتون.
ولی اگر آی دی نا مرتب وارد بشه این برنامه کار نمیکنم. مثلا کد ملی بخوایم بزنم این جور کار نمیکنه.
میخوام ارتباط بدم به جدول member که داخل بانک اطلاعاتی دارمش.
واسه این راهی بنظرتون میرسه؟

خوب خیلی ساده است :لبخند: " اتو نامبر" از سیستم شماره گزاری اتوماتیک برای ذخیره آی دی استفاده کنید
به این شکل که با هربار لود تصویر جدید آخرین شماره ثبت شده در بانک رو می خونین و یه دونه می زارین روش وتویه یک لیبل نمایش می دین وهنگام ثبت مسیر تصویر اون آیدی رو به عنوان کلید ذخیره می کنین و دفعه بعد به هم چنین و دست کاربر رو از ایجاد کد نامرتب کوتاه می کنین