1

Мне нужно чтобы я в программе вводил данные и они сохранялись в таблице SQL. Вот код, который работает, но только для тех таблиц, где имеется ячейки с типом INT, а у меня таблица только с типами STRING. Подскажите команду для применения данной функции для таблиц, где нет типов INT.

    private void button3_Click(object sender, EventArgs e)
    {
        database.openConnection();
    var mail = textBox1.Text;
    int oplata;

    if (int.TryParse(textBox2.Text, out oplata))
    {
        var addQuery = $"insert into shops (mail, pay) values ('{mail}','{oplata}')";

        var command = new SqlCommand(addQuery, database.GetConnection());
        command.ExecuteNonQuery();

        MessageBox.Show("Запись успешно создана!", "Успех!", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    else
    {
        MessageBox.Show("Запись должна иметь цифровой формат!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }

    database.closeConnection();
}

Pekor
  • 449
J00mble
  • 15
  • int.TryParse(textBox2.Text, out oplata) - велосипед какой-то :) , делай сразу так - int oplata = int.TryParse(textBox2.Text); – Pekor May 21 '22 at 23:21
  • command.ExecuteNonQuery() возвращает количество затронутых записей в бд, в твоем случае ExecuteNonQuery должен возвращать цифру 1, так как ты вставляешь одну запись. Попробуй в отладке посмотреть что возвращает эта функция (int rows = command.ExecuteNonQuery();) – Pekor May 21 '22 at 23:27
  • Спасибо, помогло! – J00mble May 22 '22 at 00:05
  • Ничего не понятно типы полей в бд должны соответствовать тому, что вы в них пытаетесь записать. Про датагрид тоже самое. Поизучайте DataAdapter + DataTable, сможете проще связать базу и таблицу в интерфейсе. Но лучше работать с моделями данных в классах https://ru.stackoverflow.com/a/1199692/373567, их проще связать с бд используя ORM библиотеку, например Entity Framework, тогда вообще SQL запросы руками писать не надо будет. – aepot May 22 '22 at 00:07

1 Answers1

0
private void button3_Click(object sender, EventArgs e)
{
    database.openConnection();

    var mail = textBox1.Text;
    var addQuery = $"insert into shops (mail) values ('{mail}')";

    var command = new SqlCommand(addQuery, database.GetConnection());
    int rows = command.ExecuteNonQuery();

    MessageBox.Show("Запись успешно создана!", "Успех!", MessageBoxButtons.OK, MessageBoxIcon.Information);

    MessageBox.Show("Запись должна иметь цифровой формат!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

    database.closeConnection();
}
J00mble
  • 15