如何在 VB.net 上从数据库中获取数据到文本框

Posted

技术标签:

【中文标题】如何在 VB.net 上从数据库中获取数据到文本框【英文标题】:How to get data from database to textbox on VB.net 【发布时间】:2013-10-28 18:37:07 【问题描述】:

嗨,我是 Visual Basic 的新手。我有一个按钮,当它被点击时,它会通过用户输入的 ID 找到学生,并将数据输出到文本字段。我不太确定我这样做是否正确。因为我收到了这个错误 [图片] >> http://img812.imageshack.us/img812/7650/gq0z.png

顺便说一句,到目前为止,这是我的代码。有人能帮助我吗?谢谢!

        cmd.CommandText = "Select * from Student where Student_id = '" & id.Text & "'"
        cmd.Connection = db

        dr = cmd.ExecuteReader

        Try
            dr.Read()
            id.Text = dr.GetValue(0)
            Lname.Text = dr.GetValue(1)
            Fname.Text = dr.GetValue(2)
            Mname.Text = dr.GetValue(3)
            datet.Text = dr.GetValue(4)
            age.Text = dr.GetValue(5)
            male.Text = dr.GetValue(6)
            female.Text = dr.GetValue(7)
            status.Text = dr.GetValue(8)
            staddress.Text = dr.GetValue(9)
            cityAdd.Text = dr.GetValue(10)
            dr.Close()

        Catch ex As Exception
            MsgBox("" + ex.Message)
            dr.Close()
        End Try

【问题讨论】:

如果id.Text 为空你会得到一个错误;您还需要在构建 SQL 之前将其包含的 text 转换为数字。将来发布实际的错误消息(它们是重要信息)而不是图片链接 我会推荐一个:If NOT isdbnull(dr.getvalue(0))... 对于每一个显然增加每一个的 getvalue 数。 不请自来的建议:继续将dr.getvalue(n) 更改为dr.getvalue("nameOfColumn")。这是一个更好的习惯。 谢谢!会检查的。 或将其更改为 dr.item("nameofcolumn") 短一点...请参阅下面的答案 【参考方案1】:
cmd.CommandText = "Select * from Student where Student_id = '" & id.Text & "'"

改为:

if IsNumeric(id.text) Then
cmd.CommandText = "Select * from student where Student_id=@p1"
cmd.Prepare
cmd.Parameters.AddWithValue("@p1", id.text)
dr = cmd.ExecuteReader
....
Else
Exit Sub
End If

你可以这样做,或者

 dr = cmd.ExecuteReader

    Try
       with dr
        .Read()
        id.Text = .GetValue(0)
        end with
        dr.Close()

with dr
    .read
    id.text = .item("id")
    .close

更容易阅读......

【讨论】:

【参考方案2】:

首先添加一个引用,如果你使用的是 mysql 数据库 把它打赌。班级

Dim Connection As MySqlConnection
Dim command As MySqlCommand

把它放到你的文本框中

Connection = New MySqlConnection
Connection.ConnectionString = "Server=localhost;port=3306;userid=root;password=root;database=databasename"
Dim reader As MySqlDataReader

根是默认的

Try
  Connection.Open()
  Dim query As String
  query= "Select * from Databasename.tablename where fieldname='" & textbox1.text & "'"
  Command = New MySqlCommand(query, Connection)
  reader = Command.ExecuteReader
  While reader.Read
    Dim sname As String
    sname = reader.GetString("Fieldname")
    textbox1.Items.Add(sname)
  End While
  Connection.Close()
Catch e MySqlException
  MsgBox (ex.Message)
Finally
  Connection.Dispose
End Try

【讨论】:

【参考方案3】:

如果您使用的是Mysql 数据库,请先添加引用。添加MySql数据库

的引用
    转到您的解决方案资源管理器并右键单击您的项目名称

    查找添加->引用

    将打开一个窗口

    在该窗口中,在“程序集”下选择框架。 在右侧会有一个列表查找并选择 Microsoft.VisualBasic.Compatability.Data 在扩展中,找到并添加 MySql.Data 和 MSDATASRC 点击确定

【讨论】:

以上是关于如何在 VB.net 上从数据库中获取数据到文本框的主要内容,如果未能解决你的问题,请参考以下文章

如何将新行添加到数据表 vb.net

VB.Net 和 Access - 获取累加器值

如何从 VB.net 组合框中的数据库中获取特定列的所有行?

VB.NET操作SQL SERVER 2008数据库,想把文本框中输入的字符串转化为数字进行数据库的更新,却一直失败

如何在 vb.net 中将 datagridview 单元格样式从默认文本框更改为组合框?

在 vb.net 的文本框中显示 datagridview 单元格数据