Проверьте, существует ли такое же имя пользователя в sql управлении сервером ..... если это так, не добавляйте имя пользователя - PullRequest
0 голосов
/ 02 марта 2020

Это показывает мне 2 ошибки .. пожалуйста, помогите ..... требуется для моей работы над проектом

Ошибка, отображаемая в обоих случаях, выглядит следующим образом: -

Ошибка 1 «System.Data.SqlClient.SqlDataAdapter» не содержит определения «loginregistration», и нет метода расширения «loginregistration», принимающего первый аргумент типа «System.Data.SqlClient.SqlDataAdapter» (вы пропускаете использование директива или ссылка на сборку?)

    private void btnSave_Click(object sender, EventArgs e)
    {
        {

            if (txtUsername.Text == "" || txtEmail.Text == "")
            {
                MessageBox.Show("Please enter all Details");
            }
            else
            {
                SqlCommand cmd = new SqlCommand("select * from loginregistration WHERE username='" + txtUsername.Text + "'", con);

                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                int i = da.loginregistration[0].Rows.Count;//.........(ERROR HERE)
                if (i > 0)
                {
                    MessageBox.Show("Username Already Exists");
                    da.Clear();//............(ERROR HERE)
                }
                else
                {
                    try
                    {
                        SqlCommand cmd1 = con.CreateCommand();
                        cmd1.CommandType = CommandType.Text;

                        cmd1.CommandText = "insert into loginregistration(username,FirstName,LastName,Email,Address,Contact_No) VALUES('" + txtUsername.Text + "','" + txtFirstName.Text + "','" + txtLastName.Text + "','" + txtEmail.Text + "','" + txtAddress.Text + "','" + txtContact.Text + "')";
                        cmd1.ExecuteNonQuery();

                        con.Close();
                        disp_data();
                        MessageBox.Show("Inserted Successfully");
                        txtUsername.Text = txtFirstName.Text = txtLastName.Text = txtEmail.Text = txtContact.Text = txtAddress.Text = "";
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("ex.Message");
                    }
                }
            }
        }
    }

Ответы [ 3 ]

1 голос
/ 02 марта 2020

Давайте извлечем метод проверки существования пользователя. Нам не нужно загружать все данные в DataTable с помощью SqlDataAdapter; одного запроса будет достаточно:

private bool UserExists(string userName) {
  if (null == userName)
    return false;

  using (SqlConnection conn = new SqlConnection("Connection_String_Here")) {
    conn.Open();

    // Keep query readable
    // Make query parametrized
    string sql =
      @"select 1 
          from LoginRegistration
         where UserName = @prmUserName";

    // Do not share the single connection, but create a new one
    using (SqlCommand q = new SqlCommand(sql, conn)) {
      q.Parameters.Add("@prmUserName", SqlDbType.VarChar).Value = userName;

      // If we can read at least one record
      using (var reader = q.ExecuteReader()) {
        // we can be sure the user exists
        return reader.Read();
      }
    }
  }
}

Теперь давайте воспользуемся нашим методом:

if (string.IsNullOrEmpty(txtUsername.Text) || string.IsNullOrEmpty(txtEmail.Text))
  MessageBox.Show("Please enter all Details");
else {
  if (UserExists(txtUsername.Text)) 
    MessageBox.Show("Username Already Exists");
  else {
    ...
  }
}    
1 голос
/ 02 марта 2020

попробуйте использовать набор данных

DataSet loginregistration = new DataSet(); 
da.Fill(loginregistration ,"loginregistration ");
0 голосов
/ 02 марта 2020

Чтобы исправить существующий код:

 int i = da.loginregistration[0].Rows.Count;

должно быть

 int i = ds.Tables[0].Rows.Count;

При этом вы должны обратить внимание на ответ, который дал Дмитрий, и параметризовать свой SQL. Ваш текущий метод широко открыт для SQL Инъекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...