• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Параметризированный запрос

  • Автор темы Balda
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Balda

Программа пишется в Visual Studio .NET 2003 на C#.
Задача состоит в создании отчетов по результатам выполнения запросов
к БД. Пользователь вводит параметры запроса(например, дату, ФИО и т.д.). Текст запроса содержится в sqlDataAdapter, а результат его выполнения записывается в dataSet.
Вот упрощенный текст запроса:
select ID_sector FROM Job where ID_sector=sec;
где sec-это параметр
А вот кусок функции:
{
int sector; //это переменная, содержащая значение параметра

sqlDataAdapter.SelectCommand.Parameters.Add("sec", SqlDbType.Int, 10);
sqlDataAdapter.SelectCommand.Parameters["sec"].Value=sector;

dataSet11.Clear(); //в dataSet пишем результат выполнения запроса
sqlDataAdapter.Fill(dataSet11); //а здесь постоянно вылазит ошибка ((

}

Появляется ошибка следующего вида:
"An unhandled exception of type "System.Data.SqlClient.SqlException" occured in system.data.dll

Additional information: System error."

Причем это вылазит даже если использование параметра не прописывается в тексте команды.
Как передать параметры запроса, введенные пользователем в текст запроса, чтобы это нормально работало? :)
 
B

Balda

MS SQL Server 2005.
Запрос рабочий, если не подключать параметры.
 
B

Balda

Получилось )))
Если кому пригодится вот работающий вариант.
Сначала добавляем на форму элемент sqlCommand и вручную вводим туда текст запроса:
select id_sector, name, surname from Job where id_sector=@psector;
При запуске запроса, автоматически создастся параметр @psector.
Теперь осталось только прописать кусок функции:
{
int sector;
sector=ListBox1.SelectedIndex;

dataGrid1.DataSource=dataSet11;
sqlCommand1.Parameters["@psector"].Value=sector; //задаем значение параметра из переменной
sqlDataAdapter1.SelectCommand = sqlCommand1;
dataSet11.Clear();
sqlDataAdapter1.Fill(dataSet11); //выборка данных
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!