Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

6.0K
12 мая 2008 года
Balda
79 / / 12.05.2008
Программа пишется в Visual Studio .NET 2003 на C#.
Задача состоит в создании отчетов по результатам выполнения запросов
к БД. Пользователь вводит параметры запроса(например, дату, ФИО и т.д.). Текст запроса содержится в sqlDataAdapter, а результат его выполнения записывается в dataSet.
Как передать параметры запроса, введенные пользователем в текст запроса:confused:
241
12 мая 2008 года
Sanila_san
1.6K / / 07.06.2005
А откуда текст запроса берётся в SQLDataAdapter?;) Должно помочь свойство SelectCommand, а в нём можно явно прописать текст запроса, или модифицировать имеющийся. Вот пример из MSDN:
Код:
Public Function CreateCustomerAdapter( _
  ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter()

    ' Create the SelectCommand.
    Dim command As SqlCommand = New SqlCommand( _
        "SELECT * FROM Customers " & _
        "WHERE Country = @Country AND City = @City", connection)

    ' Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15)
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15)

    adapter.SelectCommand = command

    Return adapter
End Function
Думаю, то, что пример на бейсике, не должно смутить - различия с C# минимальны.
6.0K
13 мая 2008 года
Balda
79 / / 12.05.2008
Да я приблизительно так и делаю.
Вот упрощенный текст запроса:
select ID_sector FROM Job where ID_sector=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."

Причем это вылазит даже если использование параметра не прописывается в тексте команды.
6.0K
14 мая 2008 года
Balda
79 / / 12.05.2008
Ага, получилось)))
Если кому пригодится вот работающий вариант.
Сначала добавляем на форму элемент 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);  //выборка данных                  
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог