【问题标题】:WHERE Statement in VB.NETVB.NET 中的 WHERE 语句
【发布时间】:2013-03-11 09:24:02
【问题描述】:

对于学校作业,我需要根据计算机的 MAC 地址命名计算机。我有一个带有两列 Mac-Adress 和 Computername 的 mySQL 表。我想通过以下代码使用计算机的mac地址,该代码有效。

全局声明

Public connStr As String = "Database=Mac;" &_ “数据源=本地主机;” &_ “用户 ID=root;密码=” 公共 mac_adress 作为字符串

获取 Mac 地址

公共子 MacAdres() Dim nic As NetworkInterface = Nothing

    For Each nic In NetworkInterface.GetAllNetworkInterfaces
        mac_adress = nic.GetPhysicalAddress.ToString
    Next
End Sub

但是,当我想创建 WHERE 语句时,我得到一个错误。我将以下代码用于 WHERE 语句。

Public Sub retriveData()
    Try
        Dim query As String = "SELECT * FROM 'mactable' WHERE 'Mac-adres' = '" & mac_adress & "'"
        Dim connection As New MySqlConnection(connStr)
        Dim cmd As New MySqlCommand(query, connection)

        connection.Open()

        Dim reader As MySqlDataReader
        reader = cmd.ExecuteReader()

        While reader.Read()
            MessageBox.Show(reader.GetString(1))
        End While

        reader.Close()
        connection.Close()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Sub

我做错了什么?

“MySql.Data.MySqlClient.MySqlException”类型的第一次机会异常发生在 >MySql.Data.dll

【问题讨论】:

  • 您是否尝试过直接在 Mysql 上运行该查询?除了删除字段上的引号外, ex.Message 还打印什么?请张贴表格架构。

标签: mysql .net database vb.net


【解决方案1】:

我认为您不需要表名或字段名上的引号,并且可能删除连字符。

Dim query As String = "SELECT * FROM mactable WHERE MacAdres = '" & mac_adress & "'"

【讨论】:

  • 不,什么也没做。 ://
  • 嗯。我已经看到了一些 MySQL 示例,其中表名周围有引号 - 但它们不是“正确的”引号 - 它们是在波浪号 (~) 字符下方、tab 键上方找到的引号(和,顺便提一下,StackOverflow 用来在 cmets 中标记内联代码块的那些)。
  • @nielsvermaut 当您完全限定查询中的表名和字段名时会发生什么?比如表格的“Mac.mactable”和字段名称的“Mac.mactable.Mac-adres”?
【解决方案2】:

通过使用这些来解决它:“`”而不是这些'。这很奇怪,但它解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2018-12-25
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多