проверка существования данных - PullRequest
0 голосов
/ 29 марта 2012

У меня небольшая проблема, которая занимает у меня один день, и до сих пор она не решена, я пытаюсь сохранить запись, которой нет в базе данных, если пользовательский ввод уже существовал, он не будет сохранен, но дело в том, что это работает как-то, но потом я замечаю, когда я пытаюсь проверить 2-ую строку и ввести те же значения, как имя пользователя или адрес электронной почты! данные были вставлены, поэтому они вызывают дубликаты. Как это исправить? не могли бы вы мне помочь, пожалуйста? спасибо

вот мой код.

  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>";

                }
            }
        }
    }

веб-сервисы:

    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);
    }

1 Ответ

1 голос
/ 29 марта 2012

Вы были почти там.Вы просто выполняете фактическую вставку на ранней стадии (что приведет к множеству вставок).

Что вы делаете так:

для каждой существующей записи -> если записьсопоставить новую запись -> вставить новую запись

Что вам нужно сделать, это сначала проверить все существующие записи и только затем, когда ни одна запись не соответствует вашей новой записи, вставить новую запись.* Пример модифицированного кода:

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>"; 
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...