PDA

View Full Version : این کد را چطور بنویسم(چک کردن اینکه اطلاعات از قبل در دیتابیس وجود دارد یا نه سپس درج در دیتابیس )



c_doost
شنبه 05 فروردین 1391, 21:42 عصر
سلام
من در برنامه ای میخواهم چک کنم که از قبل کد شهرستان و نام شهرستان از قبل به ثبت نرسیده باشد اگر به ثبت رسید پیغام خطا صادر شود و بگوید از قبل به ثبت رسید
اگر هم از قببل ثبت نشده باشد که در بانک درج کند
یک کد را نوشتم و میزارم لطفا کمک کنید




if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd = new SqlCommand("SELECT * FROM tbl_city where code_city='"+txt_codecity.Text+"' or city_name='"+txt_cityname.Text+"'", con);//chek kardane in ke codeshahrestane tekrari sabt nashavad
dr = cmd.ExecuteReader();
while (dr.Read())
{
if ((Convert.ToInt32(dr[1].ToString())) == Convert.ToInt32(txt_codecity.Text) || (dr[2].ToString() == txt_cityname.Text))
{
MessageBox.Show("این کد شهرستان یا نام شهرستان از قبل به ثبت رسیده است لطفا دقت کنید", "پیغام خطا");
}
else
{
DataLayer.tbl_city.InsertRow(txt_codecity.Text, txt_cityname.Text);
MessageBox.Show("شهرستان جدید به ثبت رسید");
}
}
dr.Close();
con.Close();



در این کد چک کردن و صدور پیغام خطا انجام می شود اما برای قسمت درج مشکل دارم یعنی نمیدونم کد درج را کجا بنویسم

:افسرده:

C#.net
شنبه 05 فروردین 1391, 21:57 عصر
تو دیتابیستون Unique constraint بزارید برای ستون های اشاره شده، اونوقت می تونید از این الگو استفاده کنید:



try
{
// TODO: Insert logic

// نمایش پیغام موفقیت

}
catch (SqlException ex)
{
if (ex.Number == 2601 /*duplicate error */)
{
// نمایش پیغام خطا
}
}

aghayex
شنبه 05 فروردین 1391, 22:16 عصر
من اگه بخوام مثل شما با دیتابیس کار کنم میام از stor procedur ها استفاده می کنم به این صورت :
1) یه استور پروسژور تعریف می کنم به این صورت:

create PROCEDURE Insert1
@ErrorCode tinyint output
as
if exists(select * from omoomi where id=@id)
set @ErrorCode=1
else
begin
Insert Into omoomi(pname,plast,namep) Values(@pname,@plast,@namep)
set @ErrorCode=0
return @ErrorCode
end

تو این استو پروسژور یه متغیر به نام ErrorCode تعریف می کنیم که بر حسب وضعیت به وجود اومده یه عدد بهش می دیم
2) در مرحله بعد تو برنامه کد زیر رو می نویسم

using (SqlConnection sqlcon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\db\\Database1.mdf;Integrated Security=True"))
{
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection = sqlcon;
sqlcom.CommandText = "Insert_user";
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.Parameters.AddWithValue("@pname", tnam.Text);
sqlcom.Parameters.AddWithValue("@plast", tlast.Text);
sqlcom.Parameters.AddWithValue("@namep", tnamp.Text);
SqlParameter eror = new SqlParameter("@ErrorCode", SqlDbType.TinyInt);
eror.Direction = ParameterDirection.Output;
sqlcom.Parameters.Add(eror);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
if (Convert.ToInt32(sqlcom.Parameters["@ErrorCode"].Value) == 1)
{

چاپ پیغام اینکه شخص ثبت شد

}
else
{

چاپ پیغام اینکه شخص ثبت نشد

}