【问题标题】:Increment a database value using asp.net使用 asp.net 增加数据库值
【发布时间】:2011-09-10 16:58:46
【问题描述】:

我正在做一个项目——在线电影票务系统.... 在这种情况下,当用户输入他想要预订的座位数量时,他会转到付款页面。点击支付按钮后,如何减少用户在 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();
}

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

【问题讨论】:

  • 也许你可以告诉我们例外情况;)
  • '-2' 附近的语法不正确。这 2 是我键入要预订的座位数。所以,2 是 c 中的值。
  • 什么是异常,你确定你的代码可以编译吗?我认为可能是问题之间的问题是 silver_class= silver_class '" + - c +" ' 中的撇号 (') 。两者都删除...
  • 肯定能编译,是SQL异常,因为他的SQL语法错误。
  • 如果您告诉我们您想在 SQL 中做什么,我们可以帮助您修复您的命令。

标签: asp.net sql-server tsql


【解决方案1】:

你的SQL命令错误,你生成的是这样的:

更新保镖设置 silver_class= silver_class ' -[valueC] 'where timings = ' [valueA]'

例如,您在 where 之前忘记了一个空格,我不确定 silver_class 部分的外观,因为不清楚您要在那里实现什么。

【讨论】:

  • 它应该是update bodyguard set silver_class = silver_class + [valueC] where timings = [valueA]
  • 好吧,如果那是他想要达到的目标。也可以是减法,+ - c
  • 根据我在 asp.net 中的知识,如果我们想更新数据库中的任何内容,那么我们必须使用单引号
  • 空白不是唯一的问题,但如果没有空白,它肯定无法工作。
  • 首先它与ASP.NET无关,因为这是一条SQL命令。其次,我担心您对更新数据库的了解不是很好。字符串值需要单引号。您还应该了解参数化查询,以防止 SQL 注入攻击。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    不要使用连接字符串来创建您的 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);
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 2015-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多