Возникла проблема: неправильный синтаксис рядом с клавиатурой «как» - PullRequest
0 голосов
/ 21 июня 2019

Ошибка:

Неверный синтаксис рядом с клавиатурой «as».

Код:

private void btnUpdate_Click(object sender, EventArgs e)
    {
        try
        {
            string str_connection = "Data Source = MSSQLServer058; Initial Catalog = CarRental; Integrated Security = True";
            string MyUpd = "Update [dbo].[Booking] as t1, Car as t2, Customer as t3 " +
                           "set t1.[CustomerID] = '" + lblCustomerID.Text + "'," +
                           "t1.[VIN] = '" + lblVIN.Text + "'," +
                                "t3.[DriverLicNo] = '" + DriverLicNotxt.Text + "'" +
                           "t2.[Make] = '" + txtMake.Text + "'" +

            MessageBox.Show("Save Complete!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
}

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Похоже, вы пытаетесь обновить несколько таблиц за один раз - это невозможно.

Измените свой SQL, чтобы при необходимости выполнять несколько обновлений, инкапсулируя в транзакцию:

BEGIN TRAN
UPDATE [dbo].[Booking] set ...
UPDATE Car ...
UPDATE Customer ...
COMMIT TRAN
1 голос
/ 21 июня 2019

Я всегда делаю это предостережение при предоставлении ответа на C #: я не разработчик C #. У меня действительно очень мало опыта с этим. То, что я делал, это то, что я всегда делаю, когда показываю кому-то, как параметризировать запрос, я проверяю документацию :

private void btnUpdate_Click(object sender, EventArgs e)
{
    string str_connection = "Data Source = MSSQLServer058; Initial Catalog = CarRental; Integrated Security = True";

    using (SqlConnection conn = new SqlConnection(str_connection))
    {

        //Do your queries really have no WHERE?
        string MyUpd = "UPDATE dbo.Booking SET CustomerID = @CustomerID, VIN = @VIN; " +
                        "UPDATE dbo.Car SET Make = @Make; " + 
                        "UPDATE dbo.Customer SET DriverLicNo = @LicNo;";

        using (SqlCommand comm = new SqlCommand(MyUpd,conn))
        {

            comm.Parameters.Add("@CustomerID",SqlDbType.Int).Value = lblCustomerID.Text; //Guessed data type
            comm.Parameters.Add("@VIN",SqlDbType.VarChar,50).Value = lblVIN.Text; //Guessed data type
            comm.Parameters.Add("@Make",SqlDbType.VarChar,50).Value = txtMake.Text; //Guessed data type
            comm.Parameters.Add("@DriverLicNo",SqlDbType.VarChar,50).Value = DriverLicNotxt.Text; //Guessed data type

            try
            {
                conn.Open();
                comm.ExecuteNonQuery();
                MessageBox.Show("Save Complete!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch
            {
                /* Your Error handling */
            }
        }
    }
}

Для тех, кто определенно имеет больше опыта работы с C #, если что-то не так, пожалуйста, оставьте комментарий, и я буду рад исправить (или отправить изменения). Хотелось бы надеяться, что, по крайней мере, это заставит ОП на правильном пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...