Member 12950401 Ответов: 3

Исключение недопустимой операции


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

ком.Метод executenonquery();

пожалуйста, предложите

SqlConnection con = новый SqlConnection();
против.ConnectionString = " источник данных=.\\SQLEXPRESS;начальный каталог=master";
строка q = " вставить в category_name(category_name) значения ('" + TextBox1. Text +"')";
SqlCommand com = new SqlCommand(q, con);
ком.Метод executenonquery();
Ответ.Писать("предупреждение (категория'успешно зарегистрирован')");
против.Закрывать();

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

SqlConnection con = new SqlConnection();
        con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=master";
        string q = "insert into category_name(category_name) values('" + TextBox1.Text + "')";
        SqlCommand com = new SqlCommand(q, con);
        com.ExecuteNonQuery();
        Response.Write("<script>alert('Category successfully registered')</script>");
        con.Close();

Graeme_Grant

Существует ли внутреннее исключение?

3 Ответов

Рейтинг:
2

Atlapure Ambrish

В вашем коде я вижу, что вы используете базу данных "master", это системная база данных. Я не думаю, что вы намеренно используете это. Измените базу данных на ту, в которой вы создали таблицу category_name. Кроме того, сделайте запрос параметризованным вместо прямого ввода значений, так как это уязвимо для атаки SQL-инъекций. Для параметризованного запроса вы можете сделать вот так..

string strQuery;

Команда sqlcommand cmd в;

strQuery = "вставить в клиенты (Кодклиента, Названиекомпании) значения (@"Кодклиента", @ "название")";

cmd = new SqlCommand(strQuery);

УМК.Параметры.AddWithValue ("@CustomerID", " A234");

УМК.Параметры.AddWithValue ("@CompanyName", " DCB");


Рейтинг:
2

Patrice T

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


Рейтинг:
0

OriginalGriff

Не делай этого так! Никогда не объединяйте строки для формирования SQL-команды - всегда используйте параметризованные запросы вместо этого, иначе вы рискуете получить SQL-инъекцию, которая позволяет пользователям повредить или уничтожить вашу базу данных, просто введя текстовое поле.

Исправьте это в коде, который вы показываете - и везде в вашем приложении, - и ваша проблема, вероятно, исчезнет одновременно.


Member 12950401

сэр...я новичок в этом деле.как писать параметризованные запросы