使用mysql连接器.NET从数据库中选择单行

时间:2016-04-26 12:53:32

标签: mysql vb.net

我刚刚听说过mysql连接器,我现在想从我的数据库中取一行(每一行都是唯一的)。我不想使用循环,因为它没用(只有一行?..)。我知道如何连接到数据库,但我无法弄清楚如何选择单行。这是我的代码:

       ''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中不存在。我该怎么办?

1 个答案:

答案 0 :(得分: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)