2011-04-02 67 views
0
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(); 

,我發現了錯誤ASP.NET SQL - 附近有語法錯誤('

附近有語法錯誤('

如果我刪除這些語句:

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

我得到了沒有錯誤任何想法有什麼問題嗎

+3

你也可能想看看參數化查詢......他們是更安全,更容易編寫。 – Cosmin 2011-04-02 21:27:26

回答

2

INSERTUPDATE在SQL中的語法是不同的。你的更新應該是這樣的:

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

你從你的UPDATE語句中缺少任何約束。執行它的書面方式將更新表中的單行。另外,我會建議您更改SQL以使用預準備語句。您目前對SQL注入攻擊持開放態度。

其他一些事情:如果您使用的是/否值,我建議切換到使用一點(布爾)列。 「是」和「否」值是動態的嗎?如果沒有,你不必這樣做:

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

你可以做

... "'No'" ... 

最後,你有拼寫錯誤: 「]可」> 「可用」

+0

您好Cory,感謝您的幫助,我不熟悉SQL Perpared語句在那個時候明年的模塊,我們現在保持簡單,但我已經修復它只是不確定如何添加WHERE我得到了CMD =新的SqlCommand(「更新計劃SET Schd_Avaliable ='」+「否」+「'」,CON);現在,但我想添加WHERE Schd_ID = schdid;你能幫我把它串起來嗎? – Mark 2011-04-02 21:49:58

+0

是的,它只是'SqlCommand(「UPDATE Schedule SET Schd_Avaliable ='」+「No」+「'WHERE Schd_ID =」+ schdid.ToString(),con);' – 2011-04-03 04:46:05

0

將您的UPDATE語句更新爲以下內容。

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

您可能還想在這裏考慮一個WHERE子句。否則,對於所有行,Schd_Available都將被設置爲No。

對於到UPDATE語法參考,請查閱http://www.w3schools.com/sql/sql_update.asp

編輯:已在=,原本有它,然後改變了形式和忘記。感謝您的高舉。

+0

嗨,我現在得到錯誤的語法附近沒有 – Mark 2011-04-02 21:28:22

+0

你錯過了一個'='。應該是'SET Schd_Available ='No'' – 2011-04-02 21:29:26

2

你的SQL錯了。

"UPDATE Schedule SET Schd_Available = 'No'" 

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

通知的SET=