我刚刚听说过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中不存在。我该怎么办?
答案 0 :(得分:3)
ExecuteScalar
从单行返回单个值。因此,在您的情况下,dtb_data
必须声明为String
。很可能这是错误的,应该声明为Int
或Long
,因为您可能希望返回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)