mehdiba3
جمعه 20 تیر 1393, 03:20 صبح
میخوام مانع درج رکورد تکراری در جدول بشم . برای همین بر روی فیلد کد ملی ایندکس تعریف کردم و اون رو یونیک کردم و الان مشلم حل شده و رکورد تکراری درج نمیشه ولی مشکل اینجاست که من وقتی توسط c# پارامتر ها رو به SP درون sql ارسال می کنم هیچ پیغام خطایی در برنامه c# نشون داده نمیشه و رکورد تکراری هم درج نمیشه.
چیکار کنم که وقتی رکورد تکراری وارد شد به کاربر پیغام خطا بده؟
نکته اینکه من از برنامه نویسی 3 لایه استفاده کردم و کد لایه سوم رو اینجا قرار می دم تا شما بیشتر راهنماییم کنید که آیا باید در محیط sql server کاری کنم که c# خطا رو نشون بده یا در محیط c# باید این مدیریت انجام بشه.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace amoozeshgah
{
class DAL
{
public SqlConnection Con = new SqlConnection();
public SqlCommand Cmd;
public SqlDataAdapter Da;
// public void connect()
// {
// Con.ConnectionString = "Data Source=.;Initial Catalog=amoozeshgah;Integrated Security=True";
// Con.Open();
//Cmd = Con.CreateCommand();
//Cmd.CommandType = System.Data.CommandType.StoredProcedure;
//}
private void connect()
{
Con.ConnectionString = "Data Source=.;Initial Catalog=amoozeshgah;Integrated Security=True";
Con.Open();
Cmd = Con.CreateCommand();
Cmd.CommandType = System.Data.CommandType.StoredProcedure;
}
public void disconnect()
{
Con.Close();
Con.Dispose();
Cmd.Dispose();
}
public bool insretstudents(string Sname, string Sfamily, string Sfather, string Scodmeli, string Sage,string Ssex, string Saddress, string Sphone, string Sdate)
{
bool result = false;
try
{
connect();
Cmd.CommandText = "insretstudents";
Cmd.Parameters.AddWithValue("Sname", Sname);
Cmd.Parameters.AddWithValue("Sfamily", Sfamily);
Cmd.Parameters.AddWithValue("Sfather", Sfather);
Cmd.Parameters.AddWithValue("Scodmeli", Scodmeli);
Cmd.Parameters.AddWithValue("Sage", Sage);
Cmd.Parameters.AddWithValue("Ssex", Ssex);
Cmd.Parameters.AddWithValue("Saddress", Saddress);
Cmd.Parameters.AddWithValue("Sphone", Sphone);
Cmd.Parameters.AddWithValue("Sdate", Sdate);
Cmd.ExecuteNonQuery();
result = true;
}
catch (Exception )
{
throw;
}
finally
{
disconnect();
}
return result;
}
}
}
سوال دیگه هم داشتم. در کلاس لایه سوم که مشاهده می کنید به هیچ وقت نمیشه messagebox ایجاد کرد و غیر فعاله. آیا نمیشه در هیچ کلاسی پیغام ایجاد کنیم؟ پس چطور مشکلات یا پیغام هایی که در کلاس ها به وجود میاد رو نمایش بدیم به کاربر؟
ممنون
چیکار کنم که وقتی رکورد تکراری وارد شد به کاربر پیغام خطا بده؟
نکته اینکه من از برنامه نویسی 3 لایه استفاده کردم و کد لایه سوم رو اینجا قرار می دم تا شما بیشتر راهنماییم کنید که آیا باید در محیط sql server کاری کنم که c# خطا رو نشون بده یا در محیط c# باید این مدیریت انجام بشه.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace amoozeshgah
{
class DAL
{
public SqlConnection Con = new SqlConnection();
public SqlCommand Cmd;
public SqlDataAdapter Da;
// public void connect()
// {
// Con.ConnectionString = "Data Source=.;Initial Catalog=amoozeshgah;Integrated Security=True";
// Con.Open();
//Cmd = Con.CreateCommand();
//Cmd.CommandType = System.Data.CommandType.StoredProcedure;
//}
private void connect()
{
Con.ConnectionString = "Data Source=.;Initial Catalog=amoozeshgah;Integrated Security=True";
Con.Open();
Cmd = Con.CreateCommand();
Cmd.CommandType = System.Data.CommandType.StoredProcedure;
}
public void disconnect()
{
Con.Close();
Con.Dispose();
Cmd.Dispose();
}
public bool insretstudents(string Sname, string Sfamily, string Sfather, string Scodmeli, string Sage,string Ssex, string Saddress, string Sphone, string Sdate)
{
bool result = false;
try
{
connect();
Cmd.CommandText = "insretstudents";
Cmd.Parameters.AddWithValue("Sname", Sname);
Cmd.Parameters.AddWithValue("Sfamily", Sfamily);
Cmd.Parameters.AddWithValue("Sfather", Sfather);
Cmd.Parameters.AddWithValue("Scodmeli", Scodmeli);
Cmd.Parameters.AddWithValue("Sage", Sage);
Cmd.Parameters.AddWithValue("Ssex", Ssex);
Cmd.Parameters.AddWithValue("Saddress", Saddress);
Cmd.Parameters.AddWithValue("Sphone", Sphone);
Cmd.Parameters.AddWithValue("Sdate", Sdate);
Cmd.ExecuteNonQuery();
result = true;
}
catch (Exception )
{
throw;
}
finally
{
disconnect();
}
return result;
}
}
}
سوال دیگه هم داشتم. در کلاس لایه سوم که مشاهده می کنید به هیچ وقت نمیشه messagebox ایجاد کرد و غیر فعاله. آیا نمیشه در هیچ کلاسی پیغام ایجاد کنیم؟ پس چطور مشکلات یا پیغام هایی که در کلاس ها به وجود میاد رو نمایش بدیم به کاربر؟
ممنون