【问题标题】:how to get data to textbox from the database如何从数据库中获取数据到文本框
【发布时间】:2011-04-26 14:50:48
【问题描述】:

我有一个包含一个组合框和文本框的表单,以及一个 SQL 数据库 命名为balance,有两列;一个为customername,另一个为obbalance。 我已经将所有客户名称绑定到组合框,现在我要做的是, 当用户从组合框中选择客户名称时,文本框应显示所选customername 的平衡;在这里,客户名称不会重复 - 每个客户只有一个名称。 我能做些什么?请帮帮我。

Dim conectionstring As String
    conectionstring = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SHOPPROJECT\SHOPPROJECT\shop.mdf;Integrated Security=True;User Instance=True"


    Dim ST As String = ComboBox1.SelectedText

    Dim sqlcon As New SqlConnection(conectionstring)

    Dim sqlcmd As New SqlCommand("SELECT OBBALANCE FROM BALANCE WHERE CUSTOMERNAME =  " & " '" & ST & "'" & "", sqlcon)
    MessageBox.Show(TextBox1.Text)


    Dim result As Object

    Try
        sqlcon.Open()
        ' Dim sdr As SqlDataReader = sqlcmd.ExecuteReader()
        result = sqlcmd.ExecuteScalar()

        If result IsNot Nothing Then
            TextBox1.Text = result.ToString()
            MessageBox.Show(TextBox1.Text)

        End If

    Catch ex As SqlException
        MessageBox.Show(ex.Message)

    End Try
End Sub

我试过这个,但是我在文本框中看不到值,并且 obbalance 是 SQL 数据库中的浮点值。

【问题讨论】:

  • 我想让他们看看我能做什么先生

标签: sql vb.net sqldatareader


【解决方案1】:

如果您要更新文本框,这是单个结果(标量值)吗?如果是这样,我要做的第一件事是使用 ExecuteScalar 而不是 ExecuteReader。然后,使用带断点的调试模式来更好地了解实际发生的情况。可能只是你没有得到任何结果。

注意:为了清楚起见,我假设错误的编码做法(内联 sql 语句、硬编码的连接字符串等)。如果不是,请修复它们。

【讨论】:

  • 你可以为它编写代码执行这个plz的标量,我已经设置了断点来平衡它的nullthere所以你只能帮助我只需要读取一个数据,它只匹配tat选定的客户plz你能把上面的代码改成你知道的吗? ..
  • 我不写VB,也许这里的其他大佬可以帮助编写实际代码。您还可以查看“SqlCommand.ExecuteScalar”的 msdn 网站,这可能会为您指明正确的方向。
【解决方案2】:

进行以下更改:

Dim sqlcmd As New SqlCommand("SELECT OBBALANCE FROM BALANCE WHERE CUSTOMERNAME = '" & ST & "'", sqlcon)


TextBox1.Text = sdr.GetString(yourColumnIndex) 

ComboBox1.SelectedText 返回ComboBoxControl 上突出显示(选定)的文本。如果您没有使用鼠标选择文本的一部分或在按下键盘上的方向键时按住 shift 键,则该选项将为空。这可能就是您的查询返回零记录的原因。

改用以下内容:

Dim ST As String = ComboBox1.SelectedItem.Text 

【讨论】:

  • 我使用了 combobox.selecteditem.text 但它显示错误,我们无法将 data.row 值更改为字符串
  • 我申请了你能帮个忙你现在可以在你家试试看吗
  • 不,先生,我仍然找不到任何解决方案,请您帮我........我需要完成我的项目我尝试搜索网络我无法理解请帮助我
  • 没有错误,它没有在文本框中的 tat vb.net 中显示任何值
  • 先生,你现在不能在那里试一试,看看请......作为朋友帮我一个忙,请先生
【解决方案3】:

设置断点并确保您获得了 OBBALANCE 的值(看看您是否获得了任何行,期间可能会很好)。此外,请确保您只能获得一行,因为您正在向前迭代,即使您只需要一个值。

更好的是,考虑 ExecuteScalar,它只返回一个值。当你这样做的时候,参数化 SQL 查询,这样你就不会被注入 SQL。

更新:只需在此处更改:

sdr = sqlcmd.ExecuteReader()

类似

Dim s as String = sqlcmd.ExecuteScalar()

然后使用 s 作为您的文本框值。您可能需要 ToString() 值或以其他方式转换为字符串,因为我相信 ExecuteScalar() 返回一个对象。

【讨论】:

  • 你可以为它编写代码执行这个plz的标量,我已经设置了断点来平衡它的nullthere所以你只能帮助我只需要读取一个数据,它只匹配tat选定的客户plz你能把上面的代码改成你知道的吗......
猜你喜欢
  • 2015-03-11
  • 1970-01-01
  • 2019-07-07
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多