ASP.NET SQL - неправильный синтаксис рядом с '(' - PullRequest
0 голосов
/ 03 апреля 2011
Guid currentUserID = (Guid)Session["UserId"];
String accomid = (String)Session["AccomID"];
String schdid = (String)Session["SchdID"];
String schdprice = (String)Session["SchdPrice"];
con.Open();

cmd = new SqlCommand("insert into Transactions (Accom_ID, UserID, Schd_ID, Trans_CardNo, Trans_CardSecurity, Trans_CardName, Trans_Paid, Trans_Cost) values('" + accomid + "','" + currentUserID + "','" + schdid + "','" + txtCardNumber.Text + "','" + txtCardSecurityNumber.Text + "','" + txtName.Text + "','" + "Yes" + "','" + schdprice + "')", con);
cmd.ExecuteNonQuery(); 
cmd = new SqlCommand("UPDATE Schedule (Schd_Avaliable) values('" + "No" + "')", con);
cmd.ExecuteNonQuery();

Я получаю ошибку

Неверный синтаксис рядом с '('.

Если я уберу эти утверждения:

cmd = new SqlCommand("UPDATE Schedule (Schd_Avaliable) values('" + "No" + "')", con);
cmd.ExecuteNonQuery();

Я не получаю ошибки. Есть идеи что не так?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2011
Синтаксис

INSERT и UPDATE в SQL отличается. Ваше обновление должно быть таким:

UPDATE Table SET
   Column = Value
   ,Column2 = Value2
   ,Column3 = Value3
WHERE
    <constraint(s)>

Вы пропустили какие-либо ограничения из вашего UPDATE заявления. Выполнение его так, как написано в настоящее время, обновит каждую одну строку в вашей таблице. Кроме того, я бы порекомендовал вам изменить ваш SQL для использования подготовленных операторов. В настоящее время вы широко открыты для атак с использованием SQL-инъекций.

Пара других вещей: если вы используете значения Да / Нет, я бы рекомендовал переключиться на использование битового (логического) столбца. Будут ли значения «Да» и «Нет» динамическими? Если нет, вам не нужно делать это:

... "'" + "No" + "'" ...

Вы можете просто сделать

... "'No'" ...

И, наконец, у вас есть орфографическая ошибка: «Доступен»> «Доступен»

2 голосов
/ 03 апреля 2011

Ваш SQL неверен.

"UPDATE Schedule SET Schd_Available = 'No'"

или

"UPDATE Schedule SET Schd_Available = '" + "No" + "'"

Обратите внимание на SET и =

0 голосов
/ 03 апреля 2011

Обновите ваш оператор UPDATE до следующего.

cmd = new SqlCommand("UPDATE Schedule SET Schd_Available = '" + "No" + "'", con);
        cmd.ExecuteNonQuery();

Вы также можете рассмотреть предложение WHERE здесь. В противном случае Schd_Available будет установлен на Нет для всех строк.

Для ссылки на синтаксис UPDATE, проверьте http://www.w3schools.com/sql/sql_update.asp

РЕДАКТИРОВАТЬ : Добавлен в =, изначально он был, затем изменил формат и забыл. Спасибо за внимание.

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