PDA

View Full Version : سوال: طریقه جلوگیری از وقوع خطا



reza69
دوشنبه 27 آذر 1391, 22:05 عصر
سلام
من برای جستجو در mysql عددی رو وارد میکنم اگه عدد در دیتابیس وجود نداشته باشه ارور میده null refrences
exeption
چجوری از این خطا جلوگیری کنم؟
اینم کدمه:

string myconstring = "server=localhost;database=regdata;uid=root;passwor d=123;";
MySqlConnection connection = new MySqlConnection(myconstring);
MySqlCommand cmd;
connection.Open();
cmd = connection.CreateCommand();
try
{
cmd.CommandText = "select name from regtable where regcode=" + txtsearch.Text;
txtname.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select family from regtable where regcode=" + txtsearch.Text;
txtfamily.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select regcode from regtable where regcode=" + txtsearch.Text;
txtregcode.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select birthday from regtable where regcode=" + txtsearch.Text;
txtbirthday.Text = cmd.ExecuteScalar().ToString();
cmd.CommandText = "select location from regtable where regcode=" + txtsearch.Text;
txtlocation.Text = cmd.ExecuteScalar().ToString();
cmd.ExecuteNonQuery();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.ToString());
}
connection.Close();

ordebehesht
دوشنبه 27 آذر 1391, 22:28 عصر
این ارور نیست که این یه خطای پرسوجو هستش که چون پورسوجو نتیجه جواب پیدا نکرده نتیجه null رو نشون میده

چرا یه دستور کلی ننوشتی مثلا

select * from tbname

reza69
سه شنبه 28 آذر 1391, 08:36 صبح
این ارور نیست که این یه خطای پرسوجو هستش که چون پورسوجو نتیجه جواب پیدا نکرده نتیجه null رو نشون میده

چرا یه دستور کلی ننوشتی مثلا

select * from tbname
چون وقتی * میزارم دیگه عمل نمیکنه.اگه شما کدی دارید بگید.
برای اینکه خطای پرسجو نده باید چه دستوری بنویسم؟ میخوام موقع خطا پیام بده "چنین کدی در دیتابیس ثبت نشده".

mousa1992
سه شنبه 28 آذر 1391, 08:40 صبح
catch
{
MessageBox.Show("چنین کدی پیدا نشد");
}


توی catch شما خودتون گفتید که بگو چه استثنایی رخ داده! به صورت بالا بنویس :P

reza69
سه شنبه 28 آذر 1391, 20:42 عصر
catch
{
MessageBox.Show("چنین کدی پیدا نشد");
}


توی catch شما خودتون گفتید که بگو چه استثنایی رخ داده! به صورت بالا بنویس :P

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

ordebehesht
سه شنبه 28 آذر 1391, 21:25 عصر
catch
{
MessageBox.Show("چنین کدی پیدا نشد");
}




به جاش از یه چیز ئیگه استفاده کن


catch (Exception msg)
{
MessageBox.Show(msg.Message, "Error");
}

ordebehesht
سه شنبه 28 آذر 1391, 21:28 عصر
یه پیشنهاد دارم try‌ cath رو حذف کن و برنامتو اجرا کن ببین تو کدون خط ارور میده

ordebehesht
سه شنبه 28 آذر 1391, 21:36 عصر
من با mysql کار نکردم اما با اکسس و sql‌کار کردم اما کد سرچ متفاوت نوشتم یه سوال کد شما کد جستجو هستش؟ یا یه چیز دیگه؟

reza69
چهارشنبه 29 آذر 1391, 22:27 عصر
من با mysql کار نکردم اما با اکسس و sql‌کار کردم اما کد سرچ متفاوت نوشتم یه سوال کد شما کد جستجو هستش؟ یا یه چیز دیگه؟
خیلی ممنون از کمکتون اون کدی که دادید درست عمل کرد.
من این کدی که گذاشتم یه مقدار کد رو تو جدول جستجو میکنه و همونطور که میبینید دستور select هستش حالا نمیدونم میشه اسمشو جستجو گذاشت یا نه؟
حالا اگه شما کدی برای این کار یا به نحوی select کردن به غیر از این کد دارید بذارید.

ordebehesht
چهارشنبه 29 آذر 1391, 23:13 عصر
من بازم میگم من با mysql کار نکردم ولی فکر نمیکنم اونقدر تفاوت داشته باشه

string MyConString = "SERVER=localhost;" +
"DATABASE=mydatabase;" +
"UID=testuser;" +
"PASSWORD=testpassword;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "select * from mycustomers";
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
string thisrow = "";
for (int i= 0;i<Reader.FieldCount;i++)
thisrow+=Reader.GetValue(i).ToString() + ",";
listBox1.Items.Add(thisrow);
}
connection.Close();

ordebehesht
چهارشنبه 29 آذر 1391, 23:18 عصر
این یه نمونه کدکه از اینترنت گرفتم ای کاش با اکسسس یا sql مینوشتی راحتر میشد جواب داد

ordebehesht
چهارشنبه 29 آذر 1391, 23:23 عصر
string StrTrans = cmbchk.Text + txtUserName.Text;
try
{
if (objCon.objConnection.State == ConnectionState.Open)
{ objCon.objConnection.Close(); }
else
{
objCon.objConnection.Open();
SqlCommand objCommand = new
SqlCommand("Select U_Name,U_Password from H_User
where U_Name='" + StrTrans.ToString()+
"'and U_Password='" + this.txtPassword.Text.Trim()
+ "'", this.objCon.objConnection);
SqlDataReader objRead = objCommand.ExecuteReader();
if (objRead.Read())
{
objCon.objConnection.Close();
objCommand.Dispose();
objRead.Close();
this.Hide();
}
else
{
MessageBox.Show("Error on Entered your Username or
Pasword \nplease ReEnter your Informatin", "Invaled", MessageBoxButtons.OK,
MessageBoxIcon.Error);
txtUserName.SelectAll();
txtUserName.Focus();
}
}
catch (Exception Msg)
{
MessageBox.Show(Msg.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
btnExit.Focus();
{
}


این نمونه کدی برای جستجوی کاربر که تو جدول مربوطه هست یا نیست که با نام کاربری وکلمه عبور جستجو میکنه البیته شما با تغییرات میتونی کد مورد نظر تو انتخواب کنی