【发布时间】:2017-07-14 02:32:28
【问题描述】:
如果我在数据库中有具有相同姓氏和出生日期的患者返回 false。目前,当我没有重复时,下面的代码会返回错误事件 谢谢
C# code
private bool duplicatPatient()
{
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["Molecular"].ConnectionString);
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = @"SELECT MBID, HospitalNumber, NHSNumber, DOB, Surname, Forename
FROM Patient
WHERE
Surname= @Surname and DOB= @DOB";
cmd.Parameters.AddWithValue("@Surname", txtSearchSurname.Text);
cmd.Parameters.AddWithValue("@DOB", txtSearchDOB.Text);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
int userCount = (int) cmd.ExecuteScalar();
da.Fill(dt);
这部分代码检查我们是否有多个患者
if (userCount >1 )
{
// message in case we have patient with same details
Response.Write("<script>alert('Details entered Return more than one Patient. Click Patient Information Link to Select the Right Patient')</script>");
return false;
}
else
{
// no patient with same record
return true;
}
}
【问题讨论】:
-
ExecuteScalar() 在您的查询返回单个值时使用。为什么不使用 executequery 代替。并更改条件 userCount >1 。将结果记录放入 datatable(dt) 并检查 recordcount 是否大于 0。在 if else 条件中使用它。
-
在与“txtSearchSurname.Text”相同的代码块中看到“SqlConnection”让我的眼睛受伤。 msdn.microsoft.com/en-us/library/…stackoverflow.com/questions/13786549/…
-
您还应该将连接和命令对象包装在 USING 语句中。并小心 AddWithValue。 blogs.msmvps.com/jcoehoorn/blog/2014/05/12/…
标签: c# sql sql-server