2014-06-16 90 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

第一把火,檢查用戶是否存在一個選擇查詢。如果沒有,則觸發插入語句。

相關問題