使用asp.net增加数据库值

时间:2011-09-10 16:58:46

标签: asp.net sql-server tsql

我正在开展一个项目 - 在线电影票务系统.... 在此,当用户输入他想要预订的座位数时,他进入支付页面。单击“付款”按钮,如何减少用户在SQL Server中输入的席位数。

SqlConnection con;
SqlCommand cmd;
private void update()
{
    string a, b;
    int c;
    con = new SqlConnection("server=.;uid=sa;pwd=mayank;database=movie");
    a = Session["timings"].ToString();
    b = Session["seats"].ToString();
    c = Convert.ToInt32(b);
    con.Open();
    cmd = new SqlCommand("update bodyguard set silver_class = silver_class ' " + - c + " 'where timings = ' " + a + "' ", con);
    cmd.ExecuteNonQuery();
    con.Close();
}

使用此代码会引发异常....所以请帮助我。

4 个答案:

答案 0 :(得分:0)

您的SQL命令错误,您生成的是:

  

更新保镖集silver_class = silver_class' - [valueC]'其中,时间='[valueA]'

例如,你在where之前忘记了一个空格,我不确定silver_class部分应该如何看待,因为你不清楚你想要在那里实现什么。

答案 1 :(得分:0)

你的整数值周围有一些单引号。试试这个

"update bodyguard set silver_class = (silver_class - " + c + ") where timings = '" + a + "'"

一点建议,您应该使用try{}catch{}块来处理代码中的潜在错误。使用Convert.toInt32()转换数字时,应尝试捕获FormatException。从con.open()con.close,您可以尝试捕获SQLException

答案 2 :(得分:0)

不要使用连接字符串来创建SQL语句,这是非常糟糕的形式。这样做:

cmd = new SqlCommand("update bodyguard set silver_class = silver_class - @c where timings = @a", con);
 cmd.Parameters.AddWithValue("@c", c);
 cmd.Parameters.AddWithValue( "@", a);

答案 3 :(得分:0)

我建议参数化查询而不是易受SQL注入攻击的字符串连接。我建议你应该使用存储过程而不是内联SQL。