繁体   English   中英

VB.net数据检索和显示

[英]VB.net data retrieval and display

因此,由于某种原因,我无法解决问题,我认为以下内容只是在我尝试搜索的列中检索值的第一个字母。 注意 :该数据库称为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”

在此处输入图片说明

我做错了什么?

那是因为您只要求一个字符。 尝试使用GetString()而不是GetChar()

main.Label64.Text = (reader.GetString(0))

您的代码中有许多可以改进的地方。

首先,您可以删除条件WHERE 1 ,因为它的意思是“ Everything”,因此它没有用。

其次,您可以避免调用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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM