所以,由于某些原因我无法解决,我认为下面只检索我正在尝试搜索的列中的第一个字母。 (注意:数据库名为m1,共包含11列)。
我首先在SQL Admin中测试了查询,但它运行正常(我认为)。
然后我自己用文档写了这个,我想我可能在某个地方犯了一个错误..
Dim hostnameQuery As String = "SELECT `HOSTNAME` FROM `m1` WHERE 1"
Dim SQLConnection As New MySqlConnection(My.Settings.connStr)
Dim cmd As New MySqlCommand(hostnameQuery, SQLConnection)
Try
SQLConnection.Open()
cmd.ExecuteNonQuery()
Dim reader As MySqlDataReader
reader = cmd.ExecuteReader
While reader.Read
main.Label64.Text = (reader.GetChar(0))
End While
Catch ex As Exception
MsgBox(ex.Message.ToString)
Finally
SQLConnection.Close()
End Try
我将此添加到按钮单击,所以当我单击按钮时,只显示字母'M',但值为'M1'
我做错了什么?
答案 0 :(得分:1)
那是因为你只要求一个角色。尝试使用GetString()
代替GetChar()
:
main.Label64.Text = (reader.GetString(0))
答案 1 :(得分:0)
您的代码中有许多内容可以改进。
首先,你可以删除条件WHERE 1
,因为它意味着“一切”所以它没用。
其次,您可以避免调用cmd.ExecuteNonQuery()
,因为它通常用于运行不返回任何内容的指令(如INSERT
)。
最后,如果您只对第一个返回的行感兴趣,则可以避免While
循环并改为使用cmd.ExecuteScalar()
。
总结一下,而不是:
cmd.ExecuteNonQuery()
Dim reader As MySqlDataReader
reader = cmd.ExecuteReader
While reader.Read
main.Label64.Text = (reader.GetChar(0))
End While
只需这样做:
main.Label64.Text = Convert.ToString(cmd.ExecuteScalar())