Я создаю простую систему бронирования с C # Windows Forms и базой данных SQL. Как часть программы, пользователь может добавить текст в текстовые поля и нажать кнопку «Поиск», чтобы найти заказы, которые соответствуют критерию поиска. Когда пользователь нажимает кнопку, SQL-запрос выполняется и результаты запроса обновляются в dataGridView.
Пример ниже - простой пример из моего кода. Формат для booking_id
- это int, а строка для firstname
. Программа продолжает выдавать System.InvalidCastException
, и ошибка как-то связана со строкой, которая пытается вставить booking_id
в строку SQL. Я искал информацию об этой ошибке, но все еще не могу ее исправить. Это должно быть что-то очень простое, я здесь скучаю - кто-то может помочь? Заранее спасибо!
// User clicks 'Search' butto.
private void button_Search1_Click(object sender, EventArgs e)
{
string commandText = "SELECT * FROM Booking " +
"INNER JOIN Customer ON Booking.customer_id = Customer.customer_id" +
"WHERE Booking.booking_date IS NOT NULL AND " +
"Booking.booking_id_id LIKE '%' + @booking_id + '%' " +
"Customer.customer.firstname LIKE '%' + @firstname + '%'";
using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;" + @"AttachDbFilename=|DataDirectory|\Booking.mdf; Integrated Security=True"))
{
//Create a SqlCommand instance
SqlCommand command = new SqlCommand(commandText, connection);
//Add the parameter
//THESE LINES CAUSE PROBLEM!?
command.Parameters.Add("@booking_id", SqlDbType.Int).Value = Convert.ToInt32(textBox_BookindId);
command.Parameters.Add("@firstname", SqlDbType.VarChar, 20).Value = textBox_Firstname;
// Open SQL connection and execute query.
connection.Open();
command.ExecuteNonQuery();
SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
dataAdapter.Fill(dt);
dataGridView1.DataSource = dt;