PDA

View Full Version : نمایش پیام هنگام تکراری بودن اطلاعات بانک



seied javad
شنبه 10 خرداد 1393, 20:38 عصر
سلام خسته نباشید
من یک بانک با SQLEXPRESS ایجاد کردم و با سی شارپ ارتباطش دادم
پروژه من دفتر تلفنه و میخوام وقتی کاربر داره شخص جدیدی را ثبت میکنه اگر فیلد شماره تلفن تکراری بود یعنی داخل بانکم وجود داشت یک پیام نمایش داده بشه و بگه که این شماره قبلا ثبت شده.
مشخصات بانکم:
اسم بانک= Phonebook.mdf
اسم جدول بانک= phone
فیلدهای بانک= id وfname و lname و number و number2
من میخوام فقط وقتی که فیلد number تکراری بود پیام نمایش داده بشه و با number2 کاری نداشته باشه.
اینم قطعه کد ثبت اطلاعاتم در بانک:

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\java d\Desktop\Phonebook\Phonebook\Phonebook\Phonebook. mdf;Integrated Security=True;User Instance=True");


con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "insert into phone (id,fname,lname,number,number2)"
+ " values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox17.Text + "')";
cmd.ExecuteNonQuery();
MessageBox.Show("مخاطب افزوده شد");
con.Close();
fillgride();
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox17.Text = "";

البته یک متغیر به نام fillgride هم تعریف کردم
void fillgride()
{

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\java d\Desktop\Phonebook\Phonebook\Phonebook\Phonebook. mdf;Integrated Security=True;User Instance=True");
SqlDataAdapter da = new SqlDataAdapter("Select * from phone", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();

}

دوستان کسی هست که بتونه راهنماییم کنه؟

r4hgozar
شنبه 10 خرداد 1393, 20:57 عصر
سلام.
من روشش رو با ان تی تی فریم ورک و پروسیجر ها توضیح دادم
http://barnamenevis.org/showthread.php?454520-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-%DA%86%DA%A9-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C-entity-framwork

keyone72
شنبه 10 خرداد 1393, 22:03 عصر
به دستور سرچ بنویسید با این کوئری

string SearchMember =" select * from tbl_member where id_number = @id_number";


و با این کد

SqlDataAdapter da = new SqlDataAdapter("SearchMember", con);
da.SelectCommand.Parameters.AddWithValue("@id_number", txt_reg_IDnumber.Text.Trim());
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count != 0)
{
"یعنی این مقدار قبلا ثبت شده"
}

if (dt.Rows.Count == 0)
{
"یعنی قبلا ثبت نشده"
}

دیگه متغییر های خودتو بزا توشش

sgh_programer
یک شنبه 11 خرداد 1393, 08:50 صبح
بنام خدا
سلام
شما اول باید شماره تلفن را کلید اصلی بذارید و بعد یه try,catch بنویسید و دستورات درج را توی tryبنویس
نکته:اگر در sql کلید اصلی تعریف کنیم و به آن اطلاعات تکراری وارد کنید شماره خطای 2627 رو میده پس ما هم از این استفاده می کنیم
مثلا:

try
{
//دستورات درج
}
catch (SqlException se)
{
if (se.Number == 2627)
MessageBox.Show("اطلاعات قبلا ثبت شده است");
}

با کد های بالا شما می توانید به راحتی از ورود اطلاعات تکراری مطلع و جلوگیری کنید

موفق باشید

seied javad
یک شنبه 11 خرداد 1393, 21:46 عصر
سلام.
من روشش رو با ان تی تی فریم ورک و پروسیجر ها توضیح دادم
http://barnamenevis.org/showthread.php?454520-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-%DA%86%DA%A9-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C-entity-framwork


سلام
ممنون
ولی من آماتورم و از ان تی تی فریم ورک چیزی نمیدونم
بازم ممنون که راهنماییم کردید.

seied javad
یک شنبه 11 خرداد 1393, 21:50 عصر
به دستور سرچ بنویسید با این کوئری

string SearchMember =" select * from tbl_member where id_number = @id_number";


و با این کد

SqlDataAdapter da = new SqlDataAdapter("SearchMember", con);
da.SelectCommand.Parameters.AddWithValue("@id_number", txt_reg_IDnumber.Text.Trim());
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count != 0)
{
"یعنی این مقدار قبلا ثبت شده"
}

if (dt.Rows.Count == 0)
{
"یعنی قبلا ثبت نشده"
}

دیگه متغییر های خودتو بزا توشش

سلام من الان این خط کدا + کوئری را باید داخل دکمه ویرایشم بذارم و متغیر های خودمو بذارم جاش و برای if اول یک پیام نمایش بدم که اطلاعات یا شماره از قبل موجود است وبرای ifدوم هم دستورات ویرایشم را بذارم.
درست متوجه شدم؟

seied javad
یک شنبه 11 خرداد 1393, 21:53 عصر
بنام خدا
سلام
شما اول باید شماره تلفن را کلید اصلی بذارید و بعد یه try,catch بنویسید و دستورات درج را توی tryبنویس
نکته:اگر در sql کلید اصلی تعریف کنیم و به آن اطلاعات تکراری وارد کنید شماره خطای 2627 رو میده پس ما هم از این استفاده می کنیم
مثلا:

try
{
//دستورات درج
}
catch (SqlException se)
{
if (se.Number == 2627)
MessageBox.Show("اطلاعات قبلا ثبت شده است");
}

با کد های بالا شما می توانید به راحتی از ورود اطلاعات تکراری مطلع و جلوگیری کنید

موفق باشید
سلام
ممنون که راهنماییم کردی
الان داخل دکمه ثبتم همینا را بذارم و شماره تلفن را هم کلید اصلی تعریف کنم و اطلاعات ثبتم را هم که داخل try بذارم درست متوجه شدم؟

seied javad
یک شنبه 11 خرداد 1393, 21:55 عصر
بنام خدا
سلام
شما اول باید شماره تلفن را کلید اصلی بذارید و بعد یه try,catch بنویسید و دستورات درج را توی tryبنویس
نکته:اگر در sql کلید اصلی تعریف کنیم و به آن اطلاعات تکراری وارد کنید شماره خطای 2627 رو میده پس ما هم از این استفاده می کنیم
مثلا:

try
{
//دستورات درج
}
catch (SqlException se)
{
if (se.Number == 2627)
MessageBox.Show("اطلاعات قبلا ثبت شده است");
}

با کد های بالا شما می توانید به راحتی از ورود اطلاعات تکراری مطلع و جلوگیری کنید

موفق باشید

فقط عزیز من فیلد id را به عنوان کلید تعریف کردم و نمیشه دوتا کلید داشته باشم sql نمیذاره
؟

seied javad
یک شنبه 11 خرداد 1393, 21:58 عصر
بنام خدا
سلام
شما اول باید شماره تلفن را کلید اصلی بذارید و بعد یه try,catch بنویسید و دستورات درج را توی tryبنویس
نکته:اگر در sql کلید اصلی تعریف کنیم و به آن اطلاعات تکراری وارد کنید شماره خطای 2627 رو میده پس ما هم از این استفاده می کنیم
مثلا:

try
{
//دستورات درج
}
catch (SqlException se)
{
if (se.Number == 2627)
MessageBox.Show("اطلاعات قبلا ثبت شده است");
}

با کد های بالا شما می توانید به راحتی از ورود اطلاعات تکراری مطلع و جلوگیری کنید

موفق باشید

ولی بازم دستت درد نکنه چون یکی از مشکلات برنامم همین بود
یک دنیا تشکر
خدا خیرت بده

seied javad
یک شنبه 11 خرداد 1393, 22:01 عصر
بنام خدا
سلام
شما اول باید شماره تلفن را کلید اصلی بذارید و بعد یه try,catch بنویسید و دستورات درج را توی tryبنویس
نکته:اگر در sql کلید اصلی تعریف کنیم و به آن اطلاعات تکراری وارد کنید شماره خطای 2627 رو میده پس ما هم از این استفاده می کنیم
مثلا:

try
{
//دستورات درج
}
catch (SqlException se)
{
if (se.Number == 2627)
MessageBox.Show("اطلاعات قبلا ثبت شده است");
}

با کد های بالا شما می توانید به راحتی از ورود اطلاعات تکراری مطلع و جلوگیری کنید

موفق باشید

فقط اگر میشه یک زحمتی بکش یک توضیح درباره قطعه کدت بده
try و catch یعنی چی؟
داخل catch نوشتی SqlException se منظورت چی بوده؟

keyone72
یک شنبه 11 خرداد 1393, 22:07 عصر
دستور try
برای مدیریت خطا ها هستش یعنی اگه به هر دلیلی برنامه دچار خطا شد دستورات catch رو اجرا میکنه

keyone72
یک شنبه 11 خرداد 1393, 22:07 عصر
سلام من الان این خط کدا + کوئری را باید داخل دکمه ویرایشم بذارم و متغیر های خودمو بذارم جاش و برای if اول یک پیام نمایش بدم که اطلاعات یا شماره از قبل موجود است وبرای ifدوم هم دستورات ویرایشم را بذارم.
درست متوجه شدم؟

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

یه چیزی هم یادم رفت
SqlDataAdapter da = new SqlDataAdapter("SearchMember", con);


رو بدون ""بزار
یعنی اینطوریSearchMember

SqlDataAdapter da = new SqlDataAdapter(SearchMember, con);

seied javad
چهارشنبه 14 خرداد 1393, 20:47 عصر
به دستور سرچ بنویسید با این کوئری

string SearchMember =" select * from tbl_member where id_number = @id_number";


و با این کد

SqlDataAdapter da = new SqlDataAdapter("SearchMember", con);
da.SelectCommand.Parameters.AddWithValue("@id_number", txt_reg_IDnumber.Text.Trim());
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count != 0)
{
"یعنی این مقدار قبلا ثبت شده"
}

if (dt.Rows.Count == 0)
{
"یعنی قبلا ثبت نشده"
}

دیگه متغییر های خودتو بزا توشش


فقط یک توضیح کوچیکم در موردش بدی ممنون میشم