VB.net数据检索和显示

时间:2014-05-02 11:18:43

标签: mysql vb.net

所以,由于某些原因我无法解决,我认为下面只检索我正在尝试搜索的列中的第一个字母。 (注意:数据库名为m1,共包含11列)。

我首先在SQL Admin中测试了查询,但它运行正常(我认为)。

enter image description here

然后我自己用文档写了这个,我想我可能在某个地方犯了一个错误..

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'

enter image description here

我做错了什么?

2 个答案:

答案 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())