• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы 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); //выборка данных
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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