Brijesh C G Ответов: 2

Я не могу заполнить значение текстового поля в таблицу , я отслеживал проблему с помощью точки отладки , она возвращает нулевое значение


string OrderID = "";
string str="insert into tblOrderUser values('" + textBox1.Text + "','" + textBox2.Text + "','" + comboBilltype.Text + "','" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "'),con";
SqlCommand cmd1 = con.CreateCommand();
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = str;
cmd1.ExecuteNonQuery();

Выше кода я вставляю значение в таблицу tblOrder , все правильно , но кроме data pivker, все значения отображаются null...am очень смущение может помочь мне в этом тело Ану.

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

string OrderID = "";
string str="insert into tblOrderUser values('" + textBox1.Text + "','" + textBox2.Text + "','" + comboBilltype.Text + "','" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "'),con";
SqlCommand cmd1 = con.CreateCommand();
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = str;
cmd1.ExecuteNonQuery();

SqlCommand cmd2 = con.CreateCommand();
cmd2.CommandType = CommandType.Text;
//cmd2.CommandText = "insert into tblOrderItem values('" + txtproduct.Text + "','" + txtPrice.Text + ",'" + txtQty.Text + "',;" + txttotal.Text + "')";
cmd2.CommandText = "select top 1 * from tblOrderUser order by OUid desc";
cmd2.ExecuteNonQuery();
DataTable dt2 = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(cmd2);
adp.Fill(dt2);

2 Ответов

Рейтинг:
1

Patrice T

Совет: распечатайте запросы после конкатенации, чтобы увидеть, что они собой представляют.

string str="insert into tblOrderUser values('" + textBox1.Text + "','" + textBox2.Text + "','" + comboBilltype.Text + "','" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "'),con";

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


Brijesh C G

Спасибо за Вашу поддержку

Рейтинг:
0

Sandeep Mewara

Цитата:
все правильно но кроме data pivker

Это означает, что вам нужно выяснить и обработать значение, назначенное datapicker. Приведенный выше код не несет ответственности за его нулевое значение. Хотя, поскольку он равен null, попытка использовать ToString на нем вызовет ошибку "ССЫЛКА на объект не установлена на экземпляр".

Это одна из распространенных ошибок, задаваемых здесь - исключение нулевой ссылки.

Подробности об ошибке вы видите: Класс NullReferenceException (System) | Microsoft Docs[^]
Цитата:
Исключение NullReferenceException возникает при попытке доступа к члену типа, значение которого равно null

Возможно потому что:
1. Вы забыли создать экземпляр ссылочного типа
2. Вы забыли измерить массив перед его инициализацией.
3. Вы получаете нулевое возвращаемое значение из метода, а затем вызываете метод для возвращаемого типа.
4. Вы используете выражение (например, связываете список методов или свойств вместе) для получения значения
5. Вы перечисляете элементы массива, который содержит ссылочные типы, и ваша попытка обработать один из элементов вызывает
6. исключение создается методом, который передается null

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

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

Попробуйте.


Brijesh C G

Спасибо за Вашу поддержку