### Пример кода
1. **Создание SQL-запроса с параметрами**
Предположим, у вас есть три переменные, которые вы хотите передать в запрос: `genre`, `country`, и `movieName`. Вам нужно создать запрос, который сравнит стоимость фильмов по выбранным критериям.
```csharp
using System;
using System.Data;
using System.Data.SqlClient;
using
System.Windows .Forms;
namespace YourNamespace
{
public partial class YourForm : Form
{
private string connectionString = "your_connection_string_here";
public YourForm()
{
InitializeComponent();
}
private void btnFetchData_Click(object sender, EventArgs e)
{
string selectedGenre = cmbGenre.SelectedItem.ToString();
string selectedCountry = cmbCountry.SelectedItem.ToString();
string selectedMovieName = cmbMovie.SelectedItem.ToString();
string query = @"
SELECT MovieName, Price
FROM Movies
WHERE Genre = @Genre
AND Price < (
SELECT Price
FROM Movies
WHERE MovieName = @MovieName
AND Country = @Country
)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
// Добавляем параметры в запрос
command.Parameters.AddWithValue("@Genre", selectedGenre);
command.Parameters.AddWithValue("@Country", selectedCountry);
command.Parameters.AddWithValue("@MovieName", selectedMovieName);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// Привязываем результат к DataGridView
dataGridView1.DataSource = dataTable;
}
` ### Пояснение
1. **Параметризованный запрос**:
```sql
SELECT MovieName, Price
FROM Movies
WHERE Genre = @Genre
AND Price < (
SELECT Price
FROM Movies
WHERE MovieName = @MovieName
AND Country = @Country
)
```
Здесь `@Genre`, `@MovieName`, и `@Country` — параметры, которые будут заменены значениями из ваших ComboBox.
2. **Добавление параметров**:
```csharp
command.Parameters.AddWithValue("@Genre", selectedGenre);
command.Parameters.AddWithValue("@Country", selectedCountry);
command.Parameters.AddWithValue("@MovieName", selectedMovieName);
```
Метод `AddWithValue` добавляет параметры в запрос, заменяя их значениями, которые вы выбрали в ComboBox.
3. **Использование `SqlDataAdapter`**:
```csharp
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataGridView1.DataSource = dataTable;
```
`SqlDataAdapter` выполняет запрос и заполняет `DataTable`, который затем связывается с `DataGridView`.
- **Проверка данных**: Убедитесь, что ComboBox не пуст и что в нем действительно есть выбранные значения.
- **Обработка ошибок**: Не забудьте добавить обработку ошибок для улучшения надежности кода, например, использование `try-catch` для перехвата исключений.
Как оно должно работать: я в 3 combobox'ах выбираю данные, которые вводятся туда из БД и по нажатию кнопки делается сам запрос с выводом в datagridview.
Сверху можно увидеть закомментированные sql-запрос и прошлую попытку это сделать, а также скрин таблицы, к которой идёт обращение.