Naser Sadeghi Ответов: 1

Как вставить значение из текстовых полей C# в postgresql?


У меня есть база данных в postgresql, и я определил таблицу с именем customer с 3 столбцами:

1. ID => тип: int
2. Name => Type: varchar(50)
3. электронная почта => тип: varchar(50)

Что я уже пробовал:

Я определил последовательность с именем customer_id для автоматического заполнения ID поэтому я использую следующий код для вставки данных в таблицу:
NpgsqlCommand cmd1 = new NpgsqlCommand("insert into customer values (nextval('customer_id'), + '" + textbox1.Text + "' , '" + textBox2.Text + "');", con1);
cmd1.ExecuteNonQuery();

Но я получаю следующее исключение, когда пытаюсь добавить эти данные:
Название: Насер
Электронная почта: naser@yahoo.com

22P02: недопустимый синтаксис ввода для типа double precision: "Naser"

RickZeeland

Вы можете проверить свой запрос SQL insert в pgAdmin, я думаю, что вам нужно что-то вроде:
вставить в клиентов (ID, имя, адрес электронной почты) значения (nextval('идентификатора customer_id'), 'Насер', 'naser@yahoo.com';

Naser Sadeghi

Я протестировал тот же запрос в pgAdmin, и он хорошо работает. Проблема возникает, когда я хочу вставить данные из приложения C# windows form.

1 Ответов

Рейтинг:
0

Patrice T

NpgsqlCommand cmd1 = new NpgsqlCommand("insert into customer values (nextval('customer_id'), + '" + textbox1.Text + "' , '" + textBox2.Text + "');", con1);

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Naser Sadeghi

Я знаю о SQL-инъекции, но здесь моя проблема заключается в чем-то другом. Я знаю, как избежать SQL-инъекции. Пожалуйста, публикуйте ответы или комментарии, которые помогут вам.