在表中插入数据之前检查数据的最佳方法是什么?
问题描述:
在课程表中:
courseNum不允许null
courseName允许null
creditHours允许null
description allow null
In the Course Table:
courseNum not allow null
courseName allow null
creditHours allow null
description allow null
class DataAccess
{
public static string connstr =
ConfigurationManager.ConnectionStrings["STDBCONN"].ConnectionString;
public static object GetSingleAnswer(string sql)
{
object obj = null;
SqlConnection conn = new SqlConnection(connstr);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
obj = cmd.ExecuteScalar();
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
return obj;
}
public static int InsUpDel(string sql)
{
int rows = 0;
SqlConnection conn = new SqlConnection(connstr);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
rows = cmd.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
return rows;
}
public static DataTable GetDataTable(string sql)
{
DataTable dt = new DataTable();
SqlConnection conn = new SqlConnection(connstr);
try
{
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(dt);
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
return dt;
}
}
class Course
{
string courseNum;
public string CourseNum
{
get { return courseNum; }
set { courseNum = value; }
}
string courseName;
public string CourseName
{
get { return courseName; }
set { courseName = value; }
}
int creditHours;
public int CreditHours
{
get { return creditHours; }
set { creditHours = value; }
}
string description;
public string Description
{
get { return description; }
set { description = value; }
}
class CourseRepository
{
List<Course> COList = new List<Course>();
public List<Course> GetAllCourse()
{
COList.Clear();
try
{
string sql = "select * from courses";
DataTable da = DataAccess.GetDataTable(sql);
foreach (DataRow dr in da.Rows)
{
Course co = new Course();
co.CourseNum = (string)dr["CourseNum"];
co.CourseName = (string)dr["CourseName"];
co.CreditHours = (int)dr["CreditHours"];
if (!DBNull.Value.Equals(dr["Description"]))
co.Description = (string)dr["Description"];
COList.Add(co);
}
}
catch (Exception)
{
throw;
}
return COList;
}
public int InsertCourse(string CourseNum, string CourseName, string CreditHours, string Description)
{
string sql = "select CourseNum from courses where CourseNum='" + CourseNum + "'";
string foundCourseNum = (string)DataAccess.GetSingleAnswer(sql);
if (CourseNum != foundCourseNum)
{
sql = "insert into courses (CourseNum,CourseName,CreditHours,Description) values ('" + CourseNum + "','" + CourseName + "'," + CreditHours + ",'" + Description + "')";
return DataAccess.InsUpDel(sql);
}
return 0;
}
public int UpdateCourse(string CourseNum, string CourseName, string CreditHours, string Description)
{
string sql = "update courses set CourseName='" + CourseName + "',CreditHours=" + CreditHours + ",Description='" + Description + "' where CourseNum='" + CourseNum + "'";
return DataAccess.InsUpDel(sql);
}
public int DeleteCourse(string CourseNum)
{
string sql = "delete from courses where CourseNum='" + CourseNum + "'";
return DataAccess.InsUpDel(sql);
}
}
class CourseBusiness
{
CourseRepository _crep = new CourseRepository();
public List<Course> GetAllCourse()
{
return _crep.GetAllCourse();
}
public int InsertCourse(string CourseNum, string CourseName, string CreditHours, string Description)
{
return _crep.InsertCourse(CourseNum, CourseName, CreditHours, Description);
}
public int UpdateCourse(string CourseNum, string CourseName, string CreditHours, string Description)
{
return _crep.UpdateCourse(CourseNum, CourseName, CreditHours, Description);
}
public int DeleteCourse(string CourseNum)
{
return _crep.DeleteCourse(CourseNum);
}
}
形式---->>>
In the form---->>>
private void btnAdd_Click(object sender, EventArgs e)
{
int rows = cou.InsertCourse((txtCourseNum.Text).ToUpper(), txtCourseName.Text, txtCreditHours.Text, txtDescription.Text);
if(rows > 0)
{
txtCourseNum.Text = "";
txtCourseName.Text = "";
txtDescription.Text = "";
txtCreditHours.Text = "";
MessageBox.Show("Added");
btnUpdate.Enabled = false;
btnDelete.Enabled = false;
dgv.DataSource = null;
dgv.DataSource = cou.GetAllCourse();
dgv.Refresh();
}
else if (rows == 0)
MessageBox.Show("This Course Number already exists ..");
}
答
最好的方法是使用Javascript或ASP在UI中进行所有这些验证。净验证控件,如必需表达式验证控件。
检查以下链接 -
ASP.NET - 验证器 [ ^ ]
使用客户端验证JavaScript [ ^ ]
您可以在属性层中仔细检查这些,如下所示 -
The best way is to do all these validation in the UI using Javascript or ASP.Net validation controls like Required Expression Validation control.
Check following links-
ASP.NET - Validators[^]
Client Side Validation using JavaScript[^]
You can double check these in the Property layer too like following -
string courseNum;
public string CourseNum
{
get { return courseNum; }
set {
if(value==null) throw new ArgumentException("Course Num can't be null.");
courseNum = value;
}
}
希望有所帮助:)
Hope it helps :)