Запросите базу данных и вставьте новые данные в таблицу, только если выполнены условия начального запроса - PullRequest
0 голосов
/ 13 сентября 2018

Я работаю над небольшим проектом, в котором пользователь может войти в приложение при первом запуске приложения, и это прекрасно работает.Я хотел добавить способ, с помощью которого пользователи с атрибутом isAdmin могли бы создавать новые учетные записи, которые могут обращаться к приложению.

Пока что я ищу таблицу базы данных "employeeinfo", беря текст, который вводит пользовательв текстовое поле (this.txt_enterAdmin.Text), чтобы решить, есть ли у пользователя права на создание дополнительных учетных записей, а затем, если пользователь присутствует в "employeeinfo", он может затем ввести новое имя пользователя и пароль в таблицу.

Это тоже прекрасно работает.Моя проблема в том, что я не хочу, чтобы какой-либо пользователь мог создавать новые учетные записи, я хочу, чтобы это могли делать только администраторы.Я не уверен, как искать в базе данных с жестко закодированным ДА / НЕТ.Я добавил столбец с именем «isAdmin», а затем назначил каждому пользователю «YES» или «NO» в таблице данных SQLite, используя тип данных «text».

Вот мой код, пожалуйста, посмотрите его:

private void txt_add_newuser_Click(object sender, RoutedEventArgs e)
        {
           //logic to connect to database, search for the administrator password, and if the data is correct, then create a new user that can use the    application.

        SQLiteConnection sqliteCon = new SQLiteConnection(dbConnectionString);

            sqliteCon.Open();
            string YES = "select * from employeeinfo where isAdmin='" +  + "' ";
            string Query = "select * from employeeinfo where password='" + this.txt_enterAdmin.Text + "' and isAdmin= '" + this.YES + "' ";
            SQLiteCommand createCommand = new SQLiteCommand(Query, sqliteCon);


            createCommand.ExecuteNonQuery();
            SQLiteDataReader dr = createCommand.ExecuteReader();

            int count = 0;
            while (dr.Read())
            {
                count++;
            }
        if (count == 1)
        {

            try
            {
                SQLiteConnection sqlite_conn1;
                SQLiteCommand sqlite_cmd;
                sqlite_conn1 = new SQLiteConnection("Data Source=database.db;Version=3;");
                sqlite_conn1.Open();
                sqlite_cmd = sqlite_conn1.CreateCommand();
                sqlite_cmd.CommandText = "INSERT INTO EmployeeInfo ([username],[password]) values('" + txt_newusername.Text + "','" + txt_newPassword.Text + "' )";
                sqlite_cmd.ExecuteNonQuery();
                MessageBox.Show("Successfully added new user. Press OK/ENTER to Continue");
                //clears fields if new entry to database is accepted.
                if (txt_newusername != null)
                    (txt_newusername).Clear();
                if (txt_newPassword != null)
                    (txt_newPassword).Clear();
                if (txt_enterAdmin != null)
                    (txt_enterAdmin).Clear();
                sqlite_conn1.Close();
            }
            catch
            {
                MessageBox.Show("Everything was entered correctly, but something broke. Please contact support for help.");
            }
        }
        if (count > 1)
        {
          MessageBox.Show("Administrator password incorrect. Check your details and try again. Press enter to continue.");
          if (txt_enterAdmin != null)
          (txt_enterAdmin).Clear();
          sqliteCon.Close();
        }
        if (count < 1)
        {
           MessageBox.Show("Administrator password incorrect. Check your details and try again. Press enter to continue.");
           if (txt_enterAdmin != null)
           (txt_enterAdmin).Clear();
           sqliteCon.Close();
        }
        sqliteCon.Close();
    }

Я не уверен, как определить строку для значений YES / NO, потому что я не извлекаю данные из пользовательского элемента управления.

Любая обратная связь илилюбые ошибки, которые вы видите, что я могу исправить, также будут оценены.Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2018

Вам действительно нужно определить string YES? В таблице employeeInfo есть столбец isAdmin, поэтому выберите его в Query (на самом деле это уже сделано из-за SELECT *), а затем проверьте значение YES или NO, чтобы решить, как поступить.

Другим вариантом может быть добавление WHERE isAdmin = 'YES' к Query. Если строки не возвращены, у этого пользователя нет правильных кредитов.

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