【问题标题】:Avoiding spaces in Sql query within Vb.Net application避免在 Vb.Net 应用程序中的 Sql 查询中出现空格
【发布时间】:2014-03-21 16:14:56
【问题描述】:

我有一个数据库表,其中有两个字段:prix minprix max

当我尝试更新我的表格时

 Public Shared Sub updatetraitementprix(ByVal min As Double, ByVal max As Double, ByVal ref As Integer)

        Dim MaConnexion As SqlConnection = Nothing
        Try
            MaConnexion = OuvrirConnection()
            Dim sql As String = "update traitementprix set prix min=@min , prix max=@max  where Ref=@refer"

            Dim Commande As New SqlCommand(sql, MaConnexion)

            Commande.CommandType = CommandType.Text
            Commande.Parameters.Add(New SqlParameter("@refer", ref))
            Commande.Parameters.Add(New SqlParameter("@min", min))
            Commande.Parameters.Add(New SqlParameter("@max", max))
            Commande.ExecuteNonQuery()

        Catch
        Finally
            If MaConnexion.State = ConnectionState.Open Then
                MaConnexion.Close()
            End If
        End Try

    End Sub

由于字段名称中的空格,我遇到了 Sql 语法错误。

  1. 那么我该如何避免这个问题呢?
  2. 如何让 Sql 查询忽略字段名称中的空格?

【问题讨论】:

    标签: sql .net sql-server vb.net


    【解决方案1】:

    使用方括号。这样做:

    "update traitementprix set [prix min]=@min, [prix max]=@max where Ref=@refer"
    

    来自文档:

    结果集列的名称是一个标识符。如果名称是 遵循标识符规则的常规标识符,它不 必须划界。如果名称不符合规则 标识符必须使用方括号 ([]) 或双精度来分隔 引号 ("")。双引号可用于分隔 结果集列名,不管设置 QUOTED_IDENTIFIER 选项。

    而且,查询第一部分的答案当然是只使用identifiers 而不使用空格(或其他违反常规标识符规则的字符)。

    有关各类标识符的更多信息,请参阅this TechNet article

    【讨论】:

    • ^ 这个。并添加到这个答案(并回答问题 1:So how can i avoid this problem ?)>> 首先不要在字段名中使用空格。或者至少尽量避免它们。
    • @RobIII 确实如此。将其添加到我的答案中。
    【解决方案2】:

    在包含空格的字段名称周围加上方括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多