C# Web表单:检查重复的数据库条目
我是个新手 我正在尝试检查重复的数据库条目。我的问题是:C# Web表单:检查重复的数据库条目,c#,C#,我是个新手 我正在尝试检查重复的数据库条目。我的问题是: 如果输入成功,我希望显示成功警报 如果存在重复项,则显示重复项通知 我的问题是:重复警报会显示多次,但是,如果不存在重复项,则永远不会创建条目 这是我的代码: /// <summary> /// The following procedure creates the user account in the database The procedure first attempts to /// perform a check
/// <summary>
/// The following procedure creates the user account in the database The procedure first attempts to
/// perform a check for duplicates before submitting the registration info
/// </summary>
protected void BTN_CreateACNT_Click(object sender, EventArgs e)
{
string InsertQuery = "";
string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Reimburse"].ConnectionString;
InsertQuery = "Insert into TBL_Logins (FirstName, LastName, EmailAddress, Password) VALUES(@FirstName, @LastName, @EmailAddress, @Password)";
String FirstNameSTR = FN.Text.Trim();
String LastNameSTR = LN.Text.Trim();
String EMailAddressSTR = EmailAddress.Text.Trim();
byte[] PassByte = StrToByteArray(PWD.Text.Trim());
// CheckUser(EMailAddressSTR);
while (CheckUser(EMailAddressSTR) == false)
{
SqlConnection CN = new SqlConnection(ConnectionString);
SqlCommand CMD = new SqlCommand(InsertQuery, CN);
CMD.CommandType = CommandType.Text;
CMD.Parameters.AddWithValue("@Firstname", FirstNameSTR);
CMD.Parameters.AddWithValue("@LastName", LastNameSTR);
CMD.Parameters.AddWithValue("@EmailAddress", EMailAddressSTR);
CMD.Parameters.AddWithValue("@Password", PassByte);
CN.Open();
CMD.ExecuteNonQuery();
Response.Write("<script language='javascript'>alert('Account created successfully.');</script>");
CN.Close();
}
}
public bool CheckUser(String UserString)
{
String UserSelect = "Select * from TBL_Logins where EmailAddress = @EmailAddress";
int MailCount = 0;
string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Reimburse"].ConnectionString;
SqlConnection CN = new SqlConnection(ConnectionString);
UserString = EmailAddress.Text.Trim();
SqlCommand CMD = new SqlCommand(UserSelect, CN);
CMD.Parameters.AddWithValue("@EmailAddress", UserString);
CN.Open();
SqlDataReader dr = CMD.ExecuteReader();
while (dr.Read())
{
if (UserString == dr["EmailAddress"].ToString())
{
Response.Write("<script language='javascript'>alert('This EMail address is already taken. Please try again.');</script>");
// return true;
}
}
CN.Close();
return true;
}
protected void BTN_CreateACNT_Click(object sender, EventArgs e)
{
string InsertQuery = "";
string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Reimburse"].ConnectionString;
InsertQuery = "Insert into TBL_Logins (FirstName, LastName, EmailAddress, Password) VALUES(@FirstName, @LastName, @EmailAddress, @Password)";
String FirstNameSTR = FN.Text.Trim();
String LastNameSTR = LN.Text.Trim();
String EMailAddressSTR = EmailAddress.Text.Trim();
byte[] PassByte = StrToByteArray(PWD.Text.Trim());
// CheckUser(EMailAddressSTR);
while(CheckUser(EMailAddressSTR) == false)
{
SqlConnection CN = new SqlConnection(ConnectionString);
SqlCommand CMD = new SqlCommand(InsertQuery, CN);
CMD.CommandType = CommandType.Text;
CMD.Parameters.AddWithValue("@Firstname", FirstNameSTR);
CMD.Parameters.AddWithValue("@LastName", LastNameSTR);
CMD.Parameters.AddWithValue("@EmailAddress", EMailAddressSTR);
CMD.Parameters.AddWithValue("@Password", PassByte);
CN.Open();
CMD.ExecuteNonQuery();
Response.Write("<script language='javascript'>alert('Account created successfully.');</script>");
CN.Close();
}
}
public bool CheckUser(String UserString)
{
String UserSelect = "Select * from TBL_Logins where EmailAddress = @EmailAddress";
int MailCount = 0;
string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Reimburse"].ConnectionString;
SqlConnection CN = new SqlConnection(ConnectionString);
UserString = EmailAddress.Text.Trim();
SqlCommand CMD = new SqlCommand(UserSelect,CN);
CMD.Parameters.AddWithValue("@EmailAddress", UserString);
CN.Open();
SqlDataReader dr = CMD.ExecuteReader();
while (dr.Read())
{
if (UserString == dr["EmailAddress"].ToString())
{
Response.Write("<script language='javascript'>alert('This EMail address is already taken. Please try again.');</script>");
// return true;
}
}
CN.Close();
return true;
}
//
///以下过程在该过程首次尝试的数据库中创建用户帐户
///在提交注册信息之前,执行重复检查
///
受保护的无效BTN\u CreateACNT\u单击(对象发送者,事件参数e)
{
字符串InsertQuery=“”;
string ConnectionString=System.Configuration.ConfigurationManager.ConnectionString[“报销”]。ConnectionString;
InsertQuery=“插入TBL_登录(FirstName、LastName、EmailAddress、Password)值(@FirstName、@LastName、@EmailAddress、@Password)”;
字符串FirstNameSTR=FN.Text.Trim();
字符串LastNameSTR=LN.Text.Trim();
字符串EMailAddressSTR=EmailAddress.Text.Trim();
byte[]PassByte=strobytearray(PWD.Text.Trim());
//CheckUser(EMailAddressSTR);
while(CheckUser(EMailAddressSTR)==false)
{
SqlConnection CN=新的SqlConnection(ConnectionString);
SqlCommand CMD=newsqlcommand(InsertQuery,CN);
CMD.CommandType=CommandType.Text;
CMD.Parameters.AddWithValue(“@Firstname”,FirstNameSTR);
CMD.Parameters.AddWithValue(“@LastName”,LastNameSTR);
CMD.Parameters.AddWithValue(“@EmailAddress”,EMailAddressSTR);
CMD.Parameters.AddWithValue(“@Password”,PassByte);
CN.Open();
CMD.ExecuteNonQuery();
响应。写入(“警报(‘已成功创建帐户’);”;
CN.Close();
}
}
公共bool CheckUser(String UserString)
{
String UserSelect=“从TBL_登录中选择*,其中EmailAddress=@EmailAddress”;
int MailCount=0;
string ConnectionString=System.Configuration.ConfigurationManager.ConnectionString[“报销”]。ConnectionString;
SqlConnection CN=新的SqlConnection(ConnectionString);
UserString=EmailAddress.Text.Trim();
SqlCommand CMD=新的SqlCommand(UserSelect,CN);
CMD.Parameters.AddWithValue(“@EmailAddress”,UserString);
CN.Open();
SqlDataReader dr=CMD.ExecuteReader();
while(dr.Read())
{
if(UserString==dr[“EmailAddress”].ToString())
{
回复。写(“警报('此电子邮件地址已被占用。请重试');”;
//返回true;
}
}
CN.Close();
返回true;
}
受保护的无效BTN\u CreateACNT\u单击(对象发送者,事件参数e)
{
字符串InsertQuery=“”;
string ConnectionString=System.Configuration.ConfigurationManager.ConnectionString[“报销”]。ConnectionString;
InsertQuery=“插入TBL_登录(FirstName、LastName、EmailAddress、Password)值(@FirstName、@LastName、@EmailAddress、@Password)”;
字符串FirstNameSTR=FN.Text.Trim();
字符串LastNameSTR=LN.Text.Trim();
字符串EMailAddressSTR=EmailAddress.Text.Trim();
byte[]PassByte=strobytearray(PWD.Text.Trim());
//CheckUser(EMailAddressSTR);
while(CheckUser(EMailAddressSTR)==false)
{
SqlConnection CN=新的SqlConnection(ConnectionString);
SqlCommand CMD=newsqlcommand(InsertQuery,CN);
CMD.CommandType=CommandType.Text;
CMD.Parameters.AddWithValue(“@Firstname”,FirstNameSTR);
CMD.Parameters.AddWithValue(“@LastName”,LastNameSTR);
CMD.Parameters.AddWithValue(“@EmailAddress”,EMailAddressSTR);
CMD.Parameters.AddWithValue(“@Password”,PassByte);
CN.Open();
CMD.ExecuteNonQuery();
响应。写入(“警报(‘已成功创建帐户’);”;
CN.Close();
}
}
公共bool CheckUser(String UserString)
{
String UserSelect=“从TBL_登录中选择*,其中EmailAddress=@EmailAddress”;
int MailCount=0;
string ConnectionString=System.Configuration.ConfigurationManager.ConnectionString[“报销”]。ConnectionString;
SqlConnection CN=新的SqlConnection(ConnectionString);
UserString=EmailAddress.Text.Trim();
SqlCommand CMD=新的SqlCommand(UserSelect,CN);
CMD.Parameters.AddWithValue(“@EmailAddress”,UserString);
CN.Open();
SqlDataReader dr=CMD.ExecuteReader();
while(dr.Read())
{
if(UserString==dr[“EmailAddress”].ToString())
{
回复。写(“警报('此电子邮件地址已被占用。请重试');”;
//返回true;
}
}
CN.Close();
返回true;
}
看起来CheckUser方法总是返回true,这就是插入不起作用的原因,请在默认情况下更新该方法以返回false:
while (dr.Read())
{
if (UserString == dr["EmailAddress"].ToString())
{
Response.Write("<script language='javascript'>alert('This EMail address is already taken. Please try again.');</script>");
return true; // return true if user exists
}
}
CN.Close();
return false; // return false if the user does not exist
while(dr.Read())
{
if(UserString==dr[“EmailAddress”].ToString())
{
回复。写(“警报('此电子邮件地址已被占用。请重试');”;
return true;//如果用户存在,则返回true
}
}
CN.Close();
返回false;//如果用户不存在,则返回false
还建议使用using块来处理DB连接,而不是手动调用Close()方法。看起来CheckUser方法总是返回true,这就是插入不起作用的原因,请在默认情况下更新该方法以返回false:
while (dr.Read())
{
if (UserString == dr["EmailAddress"].ToString())
{
Response.Write("<script language='javascript'>alert('This EMail address is already taken. Please try again.');</script>");
return true; // return true if user exists
}
}
CN.Close();
return false; // return false if the user does not exist
while(dr.Read())
{
if(UserString==dr[“EmailAddress”].ToString())
{
回复。写(“警报('此电子邮件地址已被占用。请重试');”;
return true;//返回tr