2014-06-16 91 views
0

我想创建一个简单的表单,我想要验证以显示相同用户存在的消息。窗体如何在数据库中检查用户是否已经存在?

函数usernamecheck()检查验证并显示错误,如果同一个用户存在,但当我点击提交按钮它仍然提交相同的用户。

private void submit_Click(object sender, EventArgs e) 
{ 

    SqlConnection con = new SqlConnection(); 
    con.ConnectionString = "Data Source=LFC;Initial Catalog=contactmgmt;Integrated Security=True"; 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = "INSERT INTO cntc_employee (emp_f_name,emp_l_name,emp_alias,emp_contact_no,emp_address,emp_company,emp_bdate) VALUES(@fname,@lname,@alias,@contact,@address,@company,@bdate)"; 
    cmd.Connection = con; 

    cmd.Parameters.AddWithValue("@fname", textBox1.Text); 
    cmd.Parameters.AddWithValue("@lname", textBox2.Text); 
    cmd.Parameters.AddWithValue("@alias", textBox3.Text); 
    cmd.Parameters.AddWithValue("@contact", textBox4.Text); 
    cmd.Parameters.AddWithValue("@address", textBox5.Text); 
    cmd.Parameters.AddWithValue("@company", textBox6.Text); 
    cmd.Parameters.AddWithValue("@bdate", textBox7.Text.ToString()); 

    UserNameCheck(); 

    cmd.ExecuteNonQuery(); 
    con.Close(); 
    MessageBox.Show("Data Inserted Succesfully"); 
} 

public void UserNameCheck() 
{ 

    string constring = "Data Source=LFC;Initial Catalog=contactmgmt;Integrated Security=True"; 
    SqlConnection con = new SqlConnection(constring); 
    SqlCommand cmd = new SqlCommand("Select * from cntc_employee where emp_alias= @alias", con); 
    cmd.Parameters.AddWithValue("@alias", this.textBox3.Text); 
    con.Open(); 
    SqlDataReader dr = cmd.ExecuteReader(); 
    while (dr.Read()) 
    { 
    if (dr.HasRows == true) 
    { 
     MessageBox.Show("Alias "+ dr[1].ToString() +" Already exist"); 
     break; 
    } 
    } 
} 
+1

你确定你的'UserNameCheck '完全按照你想要的方式工作?你调试了你的代码吗?并使用'使用语句'来处置你的'SqlConnection'和'SqlCommand' –

+0

你能告诉我们'usernamecheck()'函数代码吗? –

+0

是的,它的作品,我认为我做错了最后3行 – skates008

回答

1

问题:您正在插入记录,而不检查是否存在或不存在用户。

解决方案: 您需要从UserNameCheck()函数返回布尔值。

retrun true如果用户名存在。如果用户名不存在,则返回 返回false

然后执行Insert Query当且仅当UserNameCheck函数返回false

试试这个:如下

Chnage的UserNameCheck()功能代码返回boolean值。

public bool UserNameCheck() 
{   
    string constring = "Data Source=LFC;Initial Catalog=contactmgmt;Integrated Security=True"; 
    SqlConnection con = new SqlConnection(constring); 
    SqlCommand cmd = new SqlCommand("Select count(*) from cntc_employee where emp_alias= @alias", con); 
    cmd.Parameters.AddWithValue("@alias", this.textBox3.Text); 
    con.Open(); 
    int TotalRows = 0; 
    TotalRows = Convert.ToInt32(cmd.ExecuteScalar()); 
    if(TotalRows > 0) 
    {    
      MessageBox.Show("Alias "+ dr[1].ToString() +" Already exist"); 
      return true; 
    } 
    else 
    { 
      return false; 
    } 
} 

现在改变Submit功能代码来验证UserNameCheck()返回值,继续插入只有在UserNameCheck()函数返回false(当用户不存在)

private void submit_Click(object sender, EventArgs e) 
{ 
    if(!UserNameCheck()) 
    { 
    SqlConnection con = new SqlConnection(); 
    con.ConnectionString = "Data Source=LFC;Initial Catalog=contactmgmt;Integrated Security=True"; 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = "INSERT INTO cntc_employee (emp_f_name,emp_l_name,emp_alias,emp_contact_no,emp_address,emp_company,emp_bdate) VALUES(@fname,@lname,@alias,@contact,@address,@company,@bdate)"; 
    cmd.Connection = con; 

    cmd.Parameters.AddWithValue("@fname", textBox1.Text); 
    cmd.Parameters.AddWithValue("@lname", textBox2.Text); 
    cmd.Parameters.AddWithValue("@alias", textBox3.Text); 
    cmd.Parameters.AddWithValue("@contact", textBox4.Text); 
    cmd.Parameters.AddWithValue("@address", textBox5.Text); 
    cmd.Parameters.AddWithValue("@company", textBox6.Text); 
    cmd.Parameters.AddWithValue("@bdate", textBox7.Text.ToString()); 



    cmd.ExecuteNonQuery(); 
    con.Close(); 
    MessageBox.Show("Data Inserted Succesfully"); 
} 
} 
+0

thnx为你的帮助它的工作 – skates008

+0

@ skates008:不客气:)不要忘记接受答案。 –

+0

#Sudhakar Tillapudi:如何检查许多其他文本框的验证,如果它是空的 – skates008

0

你应该做一个select count通过name用户第一,如果counter0做大做insert

2

第一把火,检查用户是否存在一个选择查询。如果没有,则触发插入语句。

相关问题