2012-03-29 14 views
0

Ich habe ein kleines Problem, das mich für einen Tag dauert und bis jetzt ist es nicht lösen, ich versuche, einen Datensatz zu speichern, der nicht in der Datenbank existiert, wenn die Benutzereingabe bereits vorhanden war, es wird nicht gespeichert, aber die Sache ist, es funktioniert irgendwie, aber dann merke ich, als ich versuchte, die zweite Zeile zu validieren und die gleichen Werte wie Benutzername oder E-Mail-Boom einzugeben! Die Daten wurden eingefügt, sodass Duplikate entstehen. Wie behebe ich das? kannst du mir bitte helfen? dankeÜberprüfung der Daten Existenz

hier ist mein Code.

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     lblInternetAccount.Value = lblAccountNo.Text.ToString() + txtUsername.Text.ToString(); 
     DataSet ds = new DataSet(); 
     ds = (startWebService.getAllUsers()); 
     if (ds.Tables[0].Rows.Count > 0) 
     { 
      foreach (DataRow drow in ds.Tables[0].Rows) 
      { 
       string username = drow["UserName"].ToString(); 
       string acctNo = drow["AccountNumber"].ToString(); 

       if (username != txtUsername.Text.ToString() || acctNo != lblAccountNo.Text.ToString()) 
       { 
        startWebService.insertUser(lblAccountNo.Text.ToString(), txtUsername.Text.ToString(), txtPassword.Text.ToString(), txtUsername.Text.ToString(), cboQuestion.Text.ToString(), txtAnswer.Text.ToString(), lblInternetAccount.Value.ToString(), txtPassword.Text.ToString()); 
        lblMessage.Text = "Record Updated!"; 

       } 
       else 
       { 
        lblMessage.Text = "<br>Unable to create record because account number/email is already registered.Please login instead.<br><br>"; 

       } 
      } 
     } 
    } 

Webdiensten:

private DataSet GetDataSet(string strSPROC) 
    { 

     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = conn.CreateCommand(); 
     cmd.CommandText = strSPROC; 
     conn.Open(); 
     SqlDataAdapter myDataAdapter = new SqlDataAdapter(); 
     myDataAdapter.SelectCommand = cmd; 
     DataSet dsMT = new DataSet(); 
     myDataAdapter.Fill(dsMT); 
     return dsMT; 
     conn.Close(); 
    } 
    [WebMethod] 
    public void insertUser(string accountNo, string userName, string pAssword, string eMail, string secretQuestion, string secretAnswer,string onlineActNo,string acctkey) 
    { 
     Insert("ELMS_CREATEMEMBER", accountNo, userName, pAssword, eMail, secretQuestion, secretAnswer, onlineActNo,acctkey); 
    } 

Antwort

1

Sie waren fast da. Sie führen die tatsächliche Einfügung nur zu früh durch (was zu vielen Einfügungen führt).

Was Sie tun, ist dies:

für jeden vorhandenen Datensatz -> wenn Datensatz nicht neuen Rekord überein -> Einsatz neuen Rekord

Was Sie tun müssen, ist Überprüfen Sie zunächst alle vorhandenen Datensätze und fügen Sie den neuen Datensatz nur dann ein, wenn kein Datensatz mit Ihrem neuen Datensatz übereinstimmt.

Ein modifiziertes Codebeispiel:

lblInternetAccount.Value = lblAccountNo.Text.ToString() + txtUsername.Text.ToString(); 
DataSet ds = new DataSet(); 
ds = (startWebService.getAllUsers()); 

bool isDuplicated = false; 
if (ds.Tables[0].Rows.Count > 0) 
{ 
    foreach (DataRow drow in ds.Tables[0].Rows) 
    { 
     string username = drow["UserName"].ToString(); 
     string acctNo = drow["AccountNumber"].ToString(); 

     if (username == txtUsername.Text.ToString() && acctNo == lblAccountNo.Text.ToString()) 
     { 
      isDuplicated = true; 
     } 

    } 

    if (!isDuplicated) 
    { 
     startWebService.insertUser(lblAccountNo.Text.ToString(), txtUsername.Text.ToString(), txtPassword.Text.ToString(), txtUsername.Text.ToString(), cboQuestion.Text.ToString(), txtAnswer.Text.ToString(), lblInternetAccount.Value.ToString(), txtPassword.Text.ToString()); 
     lblMessage.Text = "Record Updated!"; 
    } 
    else 
    { 
     lblMessage.Text = "<br>Unable to create record because account number/email is already registered.Please login instead.<br><br>"; 
    } 
} 
+0

immer noch nicht funktioniert, ist der Datensatz bereits vorhanden, aber das System gespeichert es wieder. – Dhenn

+0

@Dhenn - den Code repariert, hatte einen kleinen Fehler – Polity

+0

ok werde ich es verfolgen – Dhenn

Verwandte Themen