Prudhvi Raj Ответов: 2

Незамкнутая кавычка после символьной строки ')'.


Необработанное исключение типа "System.Data.SqlClient. SqlException" произошло в System.Data.dll

Дополнительная информация: неправильный синтаксис рядом с ','.

Незамкнутая кавычка после символьной строки ')'.

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

использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
используя системы.Сведения;
использование системы.Рисование;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна.Формы;
используя системы.Данных.Поставщики sqlclient;

пространство имен performing_IUD_operations
{
общественности частичного класс form1 : форма
{
открытый form1()
{
метод InitializeComponent();
}

SqlConnection con = new SqlConnection ("источник данных=localhost;начальный каталог=dataentry;Интегрированная безопасность=True;пул = False");

частная btnsava_Click недействительным(объект отправителя, EventArgs в электронной)
{
против.Открыть();
SqlDataAdapter ПДД = новый SqlDataAdapter(" вставить в [Ввод данных] (ID,имя,пол,возраст,зарплата,налоги) значения ('" + текстовое поле textbox1.Текст + "','" + поле textbox2.Текст + "','" + элемент combobox1 + "'," + textbox3 и.Текст + "','" + textBox4.Текст + "','" + textBox5.Текст + "')" ,кон);
АСД.Команды selectcommand.Метод executenonquery();
против.Закрывать();
Ящик для сообщений.Show ("Saved successful");

}
}
}

F-ES Sitecore

Используйте параметризованные запросы. Они не только устраняют эти проблемы, но и защищают вас от атак SQL-инъекций, которым в настоящее время подвержен ваш код.

2 Ответов

Рейтинг:
1

Patrice T

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


Рейтинг:
0

Jochen Arndt

Вставьте разрывы строк в строку, содержащую команду SQL. Это облегчает поиск проблемы:

SqlDataAdapter sda = new SqlDataAdapter(
" Insert Into [Data Entry] (Id,Name,Gender,Age,Salary,Tax) Values ('" + 
textBox1.Text + "','" + 
textBox2.Text + "','" + 
comboBox1 + "'," + 
textBox3.Text + "','" + 
textBox4.Text + "','" + 
textBox5.Text + "')" ,con);
Вот он:
comboBox1 + "'," +
Так и должно быть
comboBox1 + "','" +
(и вам, вероятно, придется использовать ComboBox метод как SelectedItem).

[Правка-см. комментарий Мацея Лоса]
Хотя это не связано с вопросом, важно знать о SQL-инъекция-Википедия[^].
Чтобы избежать этого, всегда используйте параметризованные запросы. Видеть Коллекции sqlparametercollection.Метод AddWithValue (String, Object) (System. Data.SqlClient)[^] например, код.
В качестве побочного эффекта у вас будут лучше читаемые запросы, которые не подвержены ошибкам из вашего вопроса.
[/РЕДАКТИРОВАТЬ]


Maciej Los

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

Jochen Arndt

Я знаю. Но это не имеет отношения к самому вопросу.
Мое внимание сосредоточено на решении конкретной проблемы.

Но вы правы, я должен был упомянуть об этом, потому что это очень важно. Я обновлю свое решение.