2011-04-02 152 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=