2014-09-25 57 views
0

我有一些代碼可以在將數據插入數據庫之前檢查數據的發生。我的問題是,在編輯數據庫中的現有數據後,它不斷顯示已存在的消息。有人可以幫助我解決方案,以防止它在編輯後阻止我輸入數據嗎?這裏是我的C#代碼如下:檢查編輯後是否阻止保存記錄

private void btnSave_Click(object sender, RoutedEventArgs e) 
{ 
    if (txtFullNames.Text.Length == 0) 
    { 
    Errormessage.Text = "Please enter your fullname"; 
    txtFullNames.Focus(); 
    } 
    else if(!Regex.IsMatch(txtFullNames.Text, @"^[a-zA-Z]")) 
    { 
    Errormessage.Text = "Fullname must not contain a number"; 
    } 
    else if (txtSurname.Text.Length == 0) 
    { 
    Errormessage.Text = "Please enter your Surname"; 
    txtSurname.Focus(); 
    } 
    else if (!Regex.IsMatch(txtSurname.Text, @"^[a-zA-Z]")) 
    { 
    Errormessage.Text = "Surname must not contain a number"; 
    } 
    else if (txtEmail.Text.Length == 0) 
    { 
    Errormessage.Text = "Please enter your Email Address"; 
    txtEmail.Focus(); 
    } 
    else if (!Regex.IsMatch(txtEmail.Text, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a- 

zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$")) 

    { 
    Errormessage.Text = "Please enter you valid email address"; 
    txtEmail.Focus(); 
    } 
    else if (cboGender.SelectedIndex == 0) 
    { 
    Errormessage.Text = "Please select your Gender"; 
    cboGender.Focus(); 
    } 
    else if (cboCompany.SelectedIndex == 0) 
    { 
    Errormessage.Text = "Please select your Company"; 
    cboCompany.Focus(); 
    } 
    else if (txtUserName.Text.Length == 0) 
    { 
    Errormessage.Text = "Please enter your Username"; 
    txtUserName.Focus(); 
    } 
    else if (txtPassword.Password.Length == 0) 
    { 
    Errormessage.Text = "Please enter your password"; 
    txtPassword.Focus(); 
    } 
    else if (txtConfirmPassword.Password.Length == 0) 
    { 
    Errormessage.Text = "Please confirm your password"; 
    txtConfirmPassword.Focus(); 
    } 
    else if (txtPassword.Password != txtConfirmPassword.Password) 
    { 
    Errormessage.Text = "Both password must match"; 
    } 
    else 
    { 
    SqlConnection oConnection = new SqlConnection(_ConnectionString); 
    SqlCommand Check_Exist = new SqlCommand("SELECT UserName from UserEnrollment WHERE username = 

@UserName AND Password = @Password", oConnection);`enter code here` 

    Check_Exist.Parameters.AddWithValue("@UserName", txtUserName.Text); 
    Check_Exist.Parameters.AddWithValue("@Password", txtPassword.Password); 
    oConnection.Open(); 
    SqlDataReader reader = Check_Exist.ExecuteReader(); 
    if (reader.HasRows) 
    { 
    MessageBox.Show("Username and Password already exist!", "Error Message", 

MessageBoxButton.OKCancel, MessageBoxImage.Error); 

    } 
    else 
    { 
    int Gender = 0; 
    bool passed = int.TryParse(cboGender.SelectedValue.ToString(), out Gender); 
    int Company = 0; 
    passed = int.TryParse(cboCompany.SelectedValue.ToString(), out Company); 
    if (passed) 
    { 
    try 
    { 
    switch (g_i_commitType) 
    { 
    case 1: 
    { 
    bool _var = _da.InsertData(UserID, 
    txtUserName.Text, 
    txtPassword.Password, 
    txtFullNames.Text, 
    txtSurname.Text, 
    txtEmail.Text, 
    Gender, 
    Company 
    ); 
    } break; 
    case 2: 
    { 
    bool _var = _da.EditData(UserId, 
    txtUserName.Text, 
    txtPassword.Password, 
    txtFullNames.Text, 
    txtSurname.Text, 
    txtEmail.Text, 
    Gender, 
    Company 
    ); 
    } break; 
    } 
    LoadGridUsers(); 
    MessageBox.Show("Data Successfully Submited", "Confirmation Message"); 
    DeleteTextBox(); 
    Errormessage.Text = ""; 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show("A handled exception occurred" + ex.Message, "Error Message", 

MessageBoxButton.OK, MessageBoxImage.Error); 

    } 
    } 
    } 

我不知道我的邏輯會阻止我在編輯後保存。

回答

0

把你的「檢查」的代碼到if語句:if(g_i_commitType == 1),因爲它是在看你的「並稱」模式,只爲g_i_commitType == 1你應該檢查用戶是否已經存在與否。

// all you validation if statements 
else 
{ 
    if(g_i_commitType == 1) 
    { 
     SqlConnection oConnection = new SqlConnection(_ConnectionString); 
     SqlCommand Check_Exist = new SqlCommand("SELECT UserName from UserEnrollment WHERE username = @UserName AND Password = @Password", oConnection);`enter code here` 

     Check_Exist.Parameters.AddWithValue("@UserName", txtUserName.Text); 
     Check_Exist.Parameters.AddWithValue("@Password", txtPassword.Password); 
     oConnection.Open(); 
     SqlDataReader reader = Check_Exist.ExecuteReader(); 
     if (reader.HasRows) 
     { 
      MessageBox.Show("Username and Password already exist!", "Error Message", MessageBoxButton.OKCancel, MessageBoxImage.Error); 
      return; 
     } 
    } 

    int Gender = 0; 
    // rest of you code 
+0

謝謝我設法解決我的問題,我也試過你,它對我來說工作得很好, – 2014-09-25 10:56:53