2013-03-21 59 views
0

對於一個學校任務,我需要根據他們的MAC地址命名計算機。我有一個有兩列Mac-Adress和Computername的mySQL表。我想通過以下代碼使用計算機的mac地址,該代碼可以正常工作。VB.NET中的聲明

的全局

公共connStr的String =宣言 「數據庫= MAC;」 & _ 「Data Source = localhost;」 & _ 「用戶ID =根;密碼=」 公共mac_adress作爲字符串

獲取MAC地址

公用Sub MacAdres() 昏暗NIC作爲的NetworkInterface =無

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

+0

您是否嘗試過直接在Mysql上運行該查詢?除了刪除字段中的引號外,ex.Message還打印什麼?請發佈表格模式。 – Jaxedin 2013-03-22 00:05:21

回答

0

我認爲你不需要在表名或字段名的報價,並可能刪除連字符。

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

Nope沒有做任何事情。 :/ – nielsvermaut 2013-03-21 19:05:18

+0

嗯。我已經看到了一些MySQL中帶有引號的例子 - 但它們不是「正確的」引號 - 它們是在代字符(〜)字符下面,在「tab」鍵之上的(和,順便說一句,StackOverflow用於在註釋中標記內聯代碼塊)。 – 2013-03-21 20:21:33

+0

@nielsvermaut在查詢中完全限定表名和字段名時會發生什麼?如表格的「Mac.mactable」和字段名稱的「Mac.mactable.Mac-adres」? – Zeddy 2013-03-22 11:45:58

0

解決它通過使用這些:「`」而不是這些'。這很奇特,但它解決了它。