c # beginner-Как использовать оператор if для проверки того, что текстовое поле пусто?

Я использую текстовое поле для вставки данных в базу данных. Однако я не хочу вставлять нулевое или пустое значение в базу данных. Как я могу использовать оператор if, чтобы проверить, что текстовое поле пусто? (что означает, что если текстовое поле пусто, покажите диалоговое окно с требуемыми входными данными пользователя)

Вот мой код:

 private void submit_button_Click(object sender, EventArgs e)
        {

        string constring = "datasource=localhost;username=root;password=";
        string Query = "INSERT INTO bug.bug (Bug_ID, title, Type_of_bug, software, software_version, description, step_to_reproduction, severity, priority, symptom) values('" + this.bugid_txt.Text+"', '" + this.title_txt.Text + "','" + this.comboBox1.Text + "','" + this.software_txt.Text + "','" + this.software_version_txt.Text + "','" + this.description_txt.Text + "','" + this.step_to_reproduction_txt.Text + "','" + this.severity_combo.Text + "','" + this.priority_combo.Text + "','" + this.symptom_txt.Text + "')";

        MySqlConnection conDataBase = new MySqlConnection(constring);
        MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
        MySqlDataReader myReader;
        try
        {
            conDataBase.Open();
            myReader = cmdDataBase.ExecuteReader();
            MessageBox.Show("The Bug have been reported");
            while(myReader.Read())
            {

            }
            this.Close();
        }catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

person Calvin Leung    schedule 06.01.2016    source источник
comment
Нравится if(yourTextBox.Text != string.Empty)? Но что более важно, вы всегда должны использовать параметризованные запросы< /а>. Такого рода конкатенации строк открыты для атак SQL Injection. Также используйте оператор using для автоматического удаления соединения и команды вместо вызова метода Close вручную.   -  person Soner Gönül    schedule 06.01.2016
comment
Кстати, прочитайте о Sql Injection. Используйте параметризованные запросы.   -  person Sriram Sakthivel    schedule 06.01.2016
comment
И используйте ExecuteNonQuery вместо ExecuteReader для выполнения оператора INSERT.   -  person Soner Gönül    schedule 06.01.2016
comment
Ребят, спс за советы :))   -  person Calvin Leung    schedule 06.01.2016
comment
Возможный дубликат Лучший способ проверить, является ли TextBox пусто или нет   -  person Alex    schedule 06.01.2016


Ответы (5)


Остерегайтесь внедрения Sql

 private void submit_button_Click(object sender, EventArgs e)
            {

     if (!string.IsNullOrEmpty(mytextBox))
    {

      MessageBox.Show("your message goes here");
       return ;
     }

        string constring = "datasource=localhost;username=root;password=";
       // insert with parameterised query 

        MySqlConnection conDataBase = new MySqlConnection(constring);
        MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
        MySqlDataReader myReader;
        try
        {
            conDataBase.Open();
            myReader = cmdDataBase.ExecuteReader();
            MessageBox.Show("The Bug have been reported");
            while(myReader.Read())
            {

            }
            this.Close();
        }catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
person Ganesh_Devlekar    schedule 06.01.2016
comment
Вы говорите о SQL Injection и показываете пример кода, который его нарушает. - person Rahul; 06.01.2016
comment
@Rahul упоминается перед ответом Be ware of Sql Injection - person Ganesh_Devlekar; 06.01.2016
comment
Однако вы показываете, как включить SQL-инъекцию в в свой ответ. Вы также должны объяснить, как этот код на самом деле решает проблему оператора. - person Sayse; 06.01.2016
comment
@Скажи, что я упомянул это как IsNullOrEmpty - person Ganesh_Devlekar; 06.01.2016

Вы можете использовать методы string.IsNullOrEmpty или string.IsNullOrWhiteSpace для проверки того, является ли строка пустой или содержит только пробелы.

Вам также следует избегать объединения запросов с использованием +. Лучше используйте паратризованные запросы. Пример.

person Dovydas Šopa    schedule 06.01.2016

Попробуйте так:

if (string.IsNullOrWhiteSpace(MyTextBox.Text)) 
{
   //some message
}

Это также будет обрабатывать пробелы (если они присутствуют в вашем текстовом поле).

Кстати,

Ваш код подвержен внедрению SQL. Вам лучше попытаться использовать параметризованный запрос для его обработки.

person Rahul Tripathi    schedule 06.01.2016

Поместите это условие в начало вашего метода

if(string.IsNullOrWhiteSpace(TextBox1.Text))
{
       MessageBox.Show("Empty value");
       return;
}
person Irshad    schedule 06.01.2016

Используйте, как показано ниже. Надеюсь, это решит вашу проблему

if(!string.IsNullOrEmpty(txtYourTextBox.Text))
{
   //Logic here if text box is not empty
}
person Mahedee    schedule 06.01.2016