【问题标题】:how use datareader while getting a value to the textbox如何在获取文本框的值时使用 datareader
【发布时间】:2011-04-26 04:07:58
【问题描述】:

嘿,朋友,我正在使用一个带有 *combobox* 的表单,其中我从 sqldatabase 命名为 balance 并且 sqldatabase 有两列一是 customername 和 另一个现在是不平衡的。

在表格中我绑定了表格中的所有客户姓名,现在我有一个我想做的文本框 当用户选择 combobox.selected 项目时,我需要在 tat 文本框中显示所选客户的任何一个客户名称

我使用了数据阅读器,但它显示错误你能帮我........

    Dim ST As String = ComboBox1.SelectedItem

    Dim sqlcon As New SqlConnection(conectionstring)

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


    Try
        con.Open()
        sdr = sqlcmd.ExecuteReader
        While (sdr.Read())
            Textbox7.Text = sdr[1]

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

    End Try

我不明白如何阅读请帮我阅读数据,表中首先是列名,然后是 obbalance 字段

【问题讨论】:

    标签: sql vb.net sqldatareader


    【解决方案1】:

    由于您要从数据库中读取单个值,因此请使用 ExecuteScalar 方法而不是使用数据读取器。

    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)
    Dim result as Object
    
    Try
        con.Open()
    
        result = sqlcmd.ExecuteScalar()
    
        If result IsNot Nothing Then
             Textbox7.Text = result.ToString() 
        End If
    
    Catch ex As SqlException
        MessageBox.Show(ex.Message)     
    
    End Try
    

    更新:
    修改代码以检查是否为空。
    删除了不再需要的数据读取器对象。
    从查询中删除了不必要的字符。

    【讨论】:

    • 嘿,它说对象引用未设置为对象的实例。在 try 块的第 2 行
    • 如果您的查询返回一个空的结果集,就会发生这种情况。我已更新代码以添加空值检查。在 SQL Server 管理工作室中执行查询并确保获得输出。
    • 先生,现在它在错误 1 ​​类型“System.Data.SqlClient.SqlDataReader”中显示错误没有构造函数。 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SHOPPROJECT\SHOPPROJECT\Form1.vb 23 17 SHOPPROJECT 在第四行它说现在没有构造函数我能做什么...
    • 先生,我已经通过逐步执行看到,我注意到它总是说所有客户名称我都在选择它,但你知道我只在该表中获得了该表的数据表格,这两个列都有数据 den wat 问题是否我的 sqlcommand 是正确的,只有从客户名为 comboboxselected item 的余额中选择的 obbalance
    • 我删除了 datareader 对象,我错误地从您的原始列表中复制粘贴了它。这不是必需的。
    【解决方案2】:
    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)
      Dim sdr As SqlDataReader
    
    
        Try
            sqlcon.Open() 'edited
            sdr = sqlcmd.ExecuteReader()
            While (sdr.Read())
                TextBox1.Text = sdr("OBBALANCE").ToString() 'sdr(1) is wrong since there is only one item
            End While
        Catch ex As SqlException
            MessageBox.Show(ex.Message)
    
    
        End Try
    

    【讨论】:

    • Textbox7.Text = sdr["OBBALANCE"].ToString()
    • 错误 1“System.Data.SqlClient.SqlDataReader”类型的值无法转换为“String”。 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SHOPPROJECT\SHOPPROJECT\SALE.vb 142 29 SHOPPROJECT
    • 需要错误 2 标识符。 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SHOPPROJECT\SHOPPROJECT\SALE.vb 142 33 SHOPPROJECT
    • 现在它运行了,但文本框仍然不包含值 y.?
    • 表中有什么值吗?检查查询
    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多