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
Параметризированный запрос
Задача состоит в создании отчетов по результатам выполнения запросов
к БД. Пользователь вводит параметры запроса(например, дату, ФИО и т.д.). Текст запроса содержится в sqlDataAdapter, а результат его выполнения записывается в dataSet.
Как передать параметры запроса, введенные пользователем в текст запроса:confused:
Код:
Вот упрощенный текст запроса:
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); //а здесь постоянно вылазит ошибка ((
}
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."
Причем это вылазит даже если использование параметра не прописывается в тексте команды.
Если кому пригодится вот работающий вариант.
Сначала добавляем на форму элемент 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); //выборка данных
}
int sector;
sector=ListBox1.SelectedIndex;
dataGrid1.DataSource=dataSet11;
sqlCommand1.Parameters["@psector"].Value=sector; //задаем значение параметра из переменной
sqlDataAdapter1.SelectCommand = sqlCommand1;
dataSet11.Clear();
sqlDataAdapter1.Fill(dataSet11); //выборка данных
}