C# 如果记录中输入的值在另一个字段中已有值,如何在标签中给出错误?
我在网络表单中有三个文本框,分别是用户名、密码和用户注册时必须输入的IC号。如果此人输入的IC号与数据库中任何记录的IC值匹配,它将更新此人在具有匹配IC的记录的用户名字段和密码字段中键入的用户名和密码。更新部分很好,但我想做的是,如果数据库中输入的nric用户名和密码的记录被填写,我想在标签中有一个错误,表明该nric已经有用户名和密码。帮助 等等,如果我在NRIC框中输入了S9583728F,并想注册一个帐户,但由于在我的表S9583728F中已经有一个用户名和密码,即settsser和ddddd,我希望它给我,这个NRIC已经有一个用户名和密码。 错误C# 如果记录中输入的值在另一个字段中已有值,如何在标签中给出错误?,c#,registration,C#,Registration,我在网络表单中有三个文本框,分别是用户名、密码和用户注册时必须输入的IC号。如果此人输入的IC号与数据库中任何记录的IC值匹配,它将更新此人在具有匹配IC的记录的用户名字段和密码字段中键入的用户名和密码。更新部分很好,但我想做的是,如果数据库中输入的nric用户名和密码的记录被填写,我想在标签中有一个错误,表明该nric已经有用户名和密码。帮助 等等,如果我在NRIC框中输入了S9583728F,并想注册一个帐户,但由于在我的表S9583728F中已经有一个用户名和密码,即settsser和dd
只需更改您的
更新
查询,如下所示:
string sql = @"UPDATE patient
SET
pUserName = @pUserName,
pPassword = @pPassword
WHERE pIC = @pIC and pUserName='' and pPassword =''";
解决方案2:编写一个单独的函数,如果返回false else display警告消息,则继续更新
boolean IsIDExist()
{
SqlCommand cmd = new SqlCommand();
string sql = @"SELECT count(*) from patient
WHERE pIC = @pIC" and pUserName!='' and pPassword !=''";
cmd.Parameters.AddWithValue("@pIC", txtIC.Value);
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
if(Convert.ToInte32(cmd.ExecuteScalar())>0)
return true;
return false;
}
完整代码:
boolean IsIDExist()
{
SqlCommand cmd = new SqlCommand();
string sql = @"SELECT count(*) from patient
WHERE pIC = @pIC" and pUserName!='' and pPassword !=''";
cmd.Parameters.AddWithValue("@pIC", txtIC.Value);
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
if(Convert.ToInte32(cmd.ExecuteScalar())>0)
return true;
return false;
}
if (Page.IsValid)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sacpConnectionString"].ConnectionString))
{
try
{
SqlCommand cmd = new SqlCommand();
Guid guid;
guid = Guid.NewGuid();
string sql = @"UPDATE patient
SET
pUserName = @pUserName,
pPassword = @pPassword
WHERE pIC = @pIC and pUserName='' and pPassword=''";
cmd.Parameters.AddWithValue("@pIC", txtIC.Value);
cmd.Parameters.AddWithValue("@pUsername", txtUsername.Value);
cmd.Parameters.AddWithValue("@pPassword", txtPassword.Value);
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
cmd.ExecuteNonQuery();
if (!IsIDExist())
{
Session.Add("ID", id);
Session.Add("Username", txtUsername.Value);
Session.Add("Password", txtPassword.Value);
FormsAuthentication.SetAuthCookie(txtUsername.Value, true);
Response.Redirect("registered.aspx");
}
else
{
lblErrorMessage.Text = "IC Already Exist";
}
}
/*
catch (Exception)
{
lblErrorMessage.Text = "IC does not exist";
}
*/
finally
{
con.Close();
}
}
}
在您尝试插入新记录之前,只需查询数据库并查看IC值是否已经存在。我添加了我的代码@CM kanode我刚才忘记添加代码,结果被否决了!!。更新部分很好,但我想做的是,如果数据库中输入的nric用户名和密码的记录被填写,我想在标签中有一个错误,表明该nric已经有用户名和密码@CM Kanode您的最后一行,您的意思是pIC=@pIC和pUserName=“”和pPassword=“”";对您需要在where中再添加两个条件clause@Jordjmax:对不起,我犯了错误,请尝试使用单引号,查看我编辑的答案谢谢,但是现在如果我在文本框中输入S9583728F并单击“注册”,它会将我重定向到registered.aspx。我希望它停留在页面上,并在标签上提示一个错误,说这个NRIC已经有了用户名和密码@苏达卡尔Tillapudi@Jordjmax:好的,首先告诉我是不是在更新UID和密码为空的记录?
boolean IsIDExist()
{
SqlCommand cmd = new SqlCommand();
string sql = @"SELECT count(*) from patient
WHERE pIC = @pIC" and pUserName!='' and pPassword !=''";
cmd.Parameters.AddWithValue("@pIC", txtIC.Value);
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
if(Convert.ToInte32(cmd.ExecuteScalar())>0)
return true;
return false;
}
if (Page.IsValid)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sacpConnectionString"].ConnectionString))
{
try
{
SqlCommand cmd = new SqlCommand();
Guid guid;
guid = Guid.NewGuid();
string sql = @"UPDATE patient
SET
pUserName = @pUserName,
pPassword = @pPassword
WHERE pIC = @pIC and pUserName='' and pPassword=''";
cmd.Parameters.AddWithValue("@pIC", txtIC.Value);
cmd.Parameters.AddWithValue("@pUsername", txtUsername.Value);
cmd.Parameters.AddWithValue("@pPassword", txtPassword.Value);
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
cmd.ExecuteNonQuery();
if (!IsIDExist())
{
Session.Add("ID", id);
Session.Add("Username", txtUsername.Value);
Session.Add("Password", txtPassword.Value);
FormsAuthentication.SetAuthCookie(txtUsername.Value, true);
Response.Redirect("registered.aspx");
}
else
{
lblErrorMessage.Text = "IC Already Exist";
}
}
/*
catch (Exception)
{
lblErrorMessage.Text = "IC does not exist";
}
*/
finally
{
con.Close();
}
}
}