【问题标题】:How to add a value to Sql CommandText如何向 Sql CommandText 添加值
【发布时间】:2016-07-26 05:53:25
【问题描述】:

现在我正在编写一个板球计分软件,所有详细信息都保存在数据库中。我想知道如何在点击“Wicket”时为数据库中的“W”字段添加+1。

cmd.CommandText = "UPDATE database.table SET W=W+1 WHERE bowler='" & frmmain.lblbowler.Text & "' "

在此代码中,frmmain.lblbowler.text 包含投球手姓名。

这段代码正确吗?必须做哪些改变?请善意回答。

【问题讨论】:

  • 代码看起来正确。你收到错误了吗?
  • 我们不知道您的数据库的结构,但我认为它是正确的。你又是什么问题?只需检查有关连接到 SQL 数据库的查询或建议?
  • 不适合来这里问我们你的代码是否正确。您需要运行代码,如果它有效,那么您就知道它是正确的,只有当它不正确时,您才在此处发布问题并向我们提供所有相关信息,例如错误消息。
  • 另外,您应该学习如何在 ADO.NET 代码中使用参数。 Steve O'Keefe 不久前在当前的 Aust/SL 测试中解雇了 Angelo Mathews,如果它在该游戏中得分,您的应用将会崩溃。
  • @jmcilhinney 我可以添加参数而不是 frmmain.llbowler.text

标签: sql sql-server vb.net


【解决方案1】:

永远不要以这种方式构建查询!输入frmmain.lblbowler.Text 通常从 Windows 窗体或网页上的 TextBox 控件中检索。放入该 TextBox 控件的任何内容都将放入 frmmain.lblbowler.Text 并添加到您的 SQL 字符串中。这种情况会邀请黑客用恶意内容替换该字符串。在最坏的情况下,您可以完全控制您的计算机。

不要像代码中显示的那样动态构建字符串,而是使用参数。

任何放入参数的内容都将被视为字段数据,而不是 SQL 语句的一部分,这使您的应用程序更加安全。

试试下面的

cmd.CommandText = "UPDATE database.table SET W=W+1 WHERE bowler = @bowler"

command.Parameters.Add("@bowler", SqlDbType.NVarChar)
command.Parameters("@bowler").Value =  frmmain.lblbowler.Text

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 2012-09-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2013-01-21
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多