PDA

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



shm184
دوشنبه 28 مرداد 1392, 23:07 عصر
سلام ، من یک بانک اطلاعاتی دارم که اطلاعات فردی اشخاص رو در خودش ذخیره میکنه

قصدم اینه که داده های ضروری این بانک تنها نام و نام خانوادگی افراد باشه و برای بقیه فیلدها اجازه بدم که فیلد ها به صورت دلخواه دربانک ذخیره بشه

مشکلم اینه که با اینکه در بانک به این فیلدها غیر از دو فیلد نام و نام خانوادگی اجازه خالی بودن دادم اما در هنگام ثبت اگر فیلد عکس رو خالی بذارم خطا میده و تنها در صورتیکه فیلدهای (نام،نام خانوادگی و تصویر) روبرای هر شخص وارد کنم وبقیه اطلاعات به دلخواه وارد بشه داخل بانک ذخیره میشه

میخواستم بدونم اگردلیل خطا بخاطر روشی هست که من برای ذخیره عکس داخل دیتابیس استفاده کردم کسی روش دیگه ای میدونه راهنماییم کنه و اگه نه بهم بگین مشکل کجاست

عکسی از خطا و کد نوشته شده هم ضمیمه شده

esafb52
دوشنبه 28 مرداد 1392, 23:31 عصر
با سلام من چند وقت قبل گرفتا این موضوع شدم
2 راه:
1-تو قسمت عکس بذار نال و مقدار نال پاس کن
2- با یه if چک کن ببین اگه مقدار پیکچرباکست خالی بود اصلا در اون چیزی درج نکن و اون رو تو دستورت ننویس

shm184
دوشنبه 28 مرداد 1392, 23:35 عصر
می تونین خطا رو مدیریت کنین یعنی یه شرط بگذارین که اگه پیکچر باکس خالی بود این پیغام رو نشون بده
ویا اینکه ازیه try / catch بدون پیغام استفاده کنین


ممنون ولی من قصدم اینه که اگه picturebox خالی بود هم درج بشه
یعنی افراد بتونن اگه خواستن عکس درج کنن اگه نخواستن نه

esafb52
دوشنبه 28 مرداد 1392, 23:50 عصر
خب دوست عزیز وقتی خالی هست چی درج بشه؟!!با روشی که توضیح دادم میتونین این کار رو انجام بدین اگر خالی بود نال و اگر نبود یه آرایه از بیت ها رو بفرستین

veniz2008
جمعه 01 شهریور 1392, 16:05 عصر
سلام.
پست ویرایش شد و کد بهینه تر قرار داده شد :
یک sp بصورت زیر قرار بدید :

create proc AddMorabi
@fname nvarchar(50),
@lname nvarchar(50),
@sex nvarchar(50),
@reshte nvarchar(50),
@madrak nvarchar(50),
@mobile int,
@pic varbinary(max) = null
as
insert into TblMorabi(Fname,Lname,Sex,Reshte,Madrak,Mobile,Pic )
Values(@fname,@lname,@sex,@reshte,@madrak,@mobile, @pic)
go
و کدتون رو بصورت زیر قرار بدید :

private void BtnSave_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtName.Text))
{
errorProvider1.SetError(TxtName, "وارد کردن نام مربی الزامی می باشد");
}
else if (string.IsNullOrWhiteSpace(TxtFamily.Text))
{
errorProvider1.SetError(TxtFamily, "وارد کردن نام خانوادگی الزامی میباشد");
}
else
{
SqlCommand cmd = new SqlCommand("AddMorabi", con);
MemoryStream ms = new MemoryStream();
byte[] pic_array = new byte[ms.Length];
if (pictureBox1.Image != null)
{
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = 0;
ms.Read(pic_array, 0, pic_array.Length);
cmd.Parameters.AddWithValue("@pic", pic_array);
}
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@fname", TxtName.Text);
cmd.Parameters.AddWithValue("@lname", TxtFamily.Text);
cmd.Parameters.AddWithValue("@sex", CmbSex.SelectedItem);
cmd.Parameters.AddWithValue("@reshte", TxtReshte.Text);
cmd.Parameters.AddWithValue("@madrak", TxtMadrak.Text);
cmd.Parameters.AddWithValue("@mobile", TxtMobile.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("عملیات مورد نظر با موفقیت انجام شد ");
}

}//end button save
در این حالت اگر پیکچرباکس شامل عکس باشه پارامتر ارسال میشه و در غیراینصورت درون sp مقدار پیش فرض پارامتر که null هست درج میشه.

Mahmoud.Afrad
جمعه 01 شهریور 1392, 16:45 عصر
shm184 (http://barnamenevis.org/member.php?276094-shm184) به جای عکس ، کد قرار بده که دوستان بتونن ادیت کنن و اصلاح شده اش رو قرار بدن.

باید چک کنی اگر عکسی انتخاب نشده بود null بفرستی به پارامتر.

shm184
جمعه 01 شهریور 1392, 17:08 عصر
خب دوست عزیز وقتی خالی هست چی درج بشه؟!!با روشی که توضیح دادم میتونین این کار رو انجام بدین اگر خالی بود نال و اگر نبود یه آرایه از بیت ها رو بفرستین



از این جمله که گفتم وقتی خالی باشه هم درج بشه منظورم درج بقیه اطلاعات بود (با حالت پیکچرباکس خالی)

ممنون از شما

اما با توضیحات کاملتر آقای (veniz2008) مشکلم حل شد و از ایشون ممنونم که اینقدر جامع و کامل به پست ها جواب میدن