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

Тема в разделе ".NET", создана пользователем Balda, 13 май 2008.

Статус темы:
Закрыта.
  1. Balda

    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."

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

    Balda Гость

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

    Balda Гость

    Спасибо:) Попробуем...
     
  4. Balda

    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); //выборка данных
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей