如何从数据库中获取数据到文本框



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

Dim conectionstring As String
    conectionstring = "Data Source=.SQLEXPRESS;AttachDbFilename=C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2005ProjectsSHOPPROJECTSHOPPROJECTshop.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数据库中的浮点值。

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

注意:我假设糟糕的编码实践(内联sql语句,硬编码连接字符串等)是为了清晰。

做以下修改:

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

TextBox1.Text = sdr.GetString(yourColumnIndex) 

ComboBox1.SelectedText返回ComboBoxControl上高亮显示的(选定的)文本。如果您没有使用鼠标选择其文本的一部分,或者在按键盘上的方向键时按住shift键,则该选项将为空。这可能就是为什么您的查询返回ZERO RECORDS

请使用以下语句:

Dim ST As String = ComboBox1.SelectedItem.Text 

设置一个断点,并确保获得OBBALANCE的值(查看是否获得任何行周期可能是好的)。另外,在向前迭代时,即使只需要一个值,也要确保只能获得一行。

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

更新:只需在这里更改:

sdr = sqlcmd.ExecuteReader()

变成

Dim s as String = sqlcmd.ExecuteScalar()

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

相关内容

  • 没有找到相关文章

最新更新