PDA

View Full Version : خطای زمان اجرا در هنگام ذخیره مسیر عکس در تکس باکس



kahkeshane2012
چهارشنبه 06 آذر 1392, 21:57 عصر
دوستان سلام. ببخشید من قصد دارم که یه تصویری را در sql server ذخیره کنم یه کد ساده براش نوشتم که مسیر عکسم رو در تکس باکس بریزه و بعد قصد دارم محتوای تکس باکس را در پایگاه داده ذخیره کنم امکانش هست که بگید مشکل کارم کجاست؟؟؟
با تشکر.

private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openpic = new OpenFileDialog();
DialogResult res = openFileDialog1.ShowDialog();
if (res == DialogResult.OK)
{
string filename = openFileDialog1.FileName;
pictureBox1.Image = new Bitmap(filename);
pictureBox1.Image.Save(textBox2.Text,System.Drawin g.Imaging.ImageFormat.Gif);
textBox3.Text = Application.StartupPath + "\\" + textBox2.Text+ ".Gif";
}
}

aagghh
پنج شنبه 07 آذر 1392, 02:26 صبح
نیازی به ریختن مکان عکس در textBox نیست.

private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.FileName = "";
openFileDialog1.Title = "Import image";
openFileDialog1.Filter = "PNG files (*.png) |*.png|" + "BMP files (*.bmp) |*.bmp|" + "icon files (*.ico) |*.ico|" + "jpg files (*.jpg) |*.jpg|" + "GIF files (*.gif)|*.gif|" + "JPEG files (*.jpeg)|*.jpeg";
openFileDialog1.FilterIndex = 4;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = openFileDialog1.FileName;
// تا اینجا فقط عکس رو آوردید

#region connection
String connectionString = @"Data Source=...............";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = connection.CreateCommand();
SqlDataReader Reader;
#endregion

// حالا باید یک کوئری بزنید تا آدرس عکس تو پایگاه ذخیره بشه
command.CommandText = "INSERT QUERY";
try
{
connection.Open();
Reader = command.ExecuteReader();
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

kahkeshane2012
پنج شنبه 07 آذر 1392, 17:44 عصر
اول از همه خیلی ممنون از راهنمایتون. فقط شرمنده یک سوال دیگه هم دارم طبق گفته ی شما عمل درج با موفقیت انجام شد البته بهتره بگم دو تا یکی اینکه ما بهتره که فیلد تصویر رو از نوع image بگیریم یا nvarchar چون من چند جایی دیدم که پیشنهاد کردن ایمج و برخی ها هم nvarchar پیشنهاد کردن.
سوال دوم اینکه من کد جستجوی تصویر نوشتم اما در خطی کامنت کردم خطای زمان اجرا میده و میگه نمیتونه تبدیل به بولین بکنه.
با تشکر
private void button2_Click(object sender, EventArgs e)
{

#region connection
String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Leil aShoja\Documents\DBstudent.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = connection.CreateCommand();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(command);
#endregion


command.CommandText = "select *from pictb where id=@id";
command.Parameters.AddWithValue("@id", textBox3.Text);

connection.Open();
da.Fill(ds, "pic");
connection.Close();

//byte[] arrpic =(byte[]) (ds.Tables["pic"].Rows[0]["pic"]);
System.IO.MemoryStream ms = new System.IO.MemoryStream(arrpic);
pictureBox1.Image = Image.FromStream(ms);
this.pictureBox1.DataBindings.Add(new Binding("Image", ds, "pictb.pic", true));

}

aagghh
جمعه 08 آذر 1392, 19:33 عصر
حقیقت امر اینکه من تاحالا فیلدهای دیتابیس رو از نوع image نگذاشتم ولی توی یک پروژه که دقیقا همین کار شما رو باید انجام میدادم، اومدم توی دیتابیس ستون رو از نوع nvarchar گرفتم و فقط لینک عکس رو ذخیره کردم بدون هیچ دردسری و خیلی راحت کارم راه افتاد.
در ضمن بهتره تو مسیر Debug برنامه یک فولدر با نام مثلا Image درست کنین و هر عکسی که یوزر انتخاب کرد رو کپی کنین توی فولدر Image ای که ایجاد کردید و آدرس این فایل جدید رو save کنین چون اگه کاربر عکس را دست بزنه، برنامتون خراب نشه.
اگه مثل زیر مسیر رو بهش بدین هیچ وقت به مشکل نمیخورین.

.\Image\IMAGE_NAME.jpg
or
|DataDirectory|\Image\IMAGE_NAME.jpg