2016-04-26 64 views
2

           我剛聽說mysql的連接器,現在我想從我的數據庫採取單排(每排是唯一的)。我不想使用循環,因爲它是無用的(僅用於一行?)。我知道如何連接到數據庫,但我無法弄清楚如何選擇單個行。這是我的代碼:使用MySQL連接.NET從數據庫中選擇單列

 ''Register user in dtb 
     cmd = New MySqlCommand("INSERT INTO `users`(`name`, `ip`, `status`) VALUES ('" & My.User.Name.Split("\")(1) & "','" & ip_temp & "','1')", conn) 
     cmd.ExecuteNonQuery() 


     ''Get user's Id from dtb -->this is where I'm having troubles 
     cmd = New MySqlCommand("SELECT 'id' FROM `users` WHERE name='" & My.User.Name.Split("\")(1) & "' ", conn) 
     dtb_data = cmd.ExecuteScalar 

     Debug.Print(dtb_data(0)) 


           它不工作。
           錯誤是: 「無法轉換類型 'System.String' 的對象爲類型 'MySql.Data.MySqlClient.MySqlDataReader'。」(當然...)。我知道它必須看起來像「dtb_data ['id']」(來自php),但是這個命令在VB.Net中不存在。我該怎麼辦?

回答

3

ExecuteScalar從單行返回單個值。因此,在您的情況下,dtb_data必須聲明爲String。很可能這是錯誤的,應該聲明爲IntLong,因爲您可能想要返回id,而不是'id'作爲文字。

所以完整的例子應該是:

Dim dtb_data as Long 

    cmd = New MySqlCommand("SELECT id FROM `users` WHERE name='" & My.User.Name.Split("\")(1) & "' ", conn) 
    dtb_data = cmd.ExecuteScalar 

    Debug.Print(dtb_data) 
相關問題