Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web表单:检查重复的数据库条目_C# - Fatal编程技术网

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