windows表单如果用户已经存在,如何检入数据库?

时间:2014-06-16 06:57:34

标签: c# sql .net

我想创建一个简单的表单,我想验证如果存在相同的用户则显示消息。

函数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;
    }
  }
}

3 个答案:

答案 0 :(得分:2)

首先触发一个检查用户是否存在的选择查询。如果没有那么火插入声明。

答案 1 :(得分:2)

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

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

如果用户名存在,

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

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

试试这个:

按下面的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");
 }
}

答案 2 :(得分:0)

您应首先为select count用户name,如果counter大于0,请insert