【问题标题】:SqlDataReader Convert byte to integer vb.netSqlDataReader 将字节转换为整数 vb.net
【发布时间】:2013-03-19 04:50:55
【问题描述】:

我正在尝试使用 SqlDataReader 从数据库表中检索信息。我有两列,一个是字符串,另一列是位。该字符串将被填充到一个文本框中。但是当我想将它填充到单选按钮列表时,它的问题并没有发生。它一直给我这个错误Specified cast is not valid.这是我的vb服务器端代码:

Dim dt As DataTable = New DataTable()
        Dim command As New SqlCommand(query2, conn)
        Dim param As New SqlParameter()
        param.ParameterName = "@cUserName"
        param.Value = Session("Edit")
        command.Parameters.Add(param)

        Dim dr As SqlDataReader = command.ExecuteReader()
        If dr.HasRows Then
            dr.Read()
            tbUsername.Text = dr.GetString(0)
            rblDept.SelectedIndex = dr.GetByte(1)
        End If

我尝试了dr.GetByte(1),但它不起作用。请帮帮我。

【问题讨论】:

  • 您尝试过Convert.ToInt32(dr.GetByte(1)) 还是可能的CInt()
  • 想一想,据我所知,具有位值的列是二进制的,存储 0 或 1(或 null 在这种情况下您可能会遇到问题)。你应该能够做到CInt(dr(1)),它应该可以工作。
  • @yu_ominae 是的,我试过了,它给了我同样的错误!
  • @yu_ominae 我试过CInt(dr(1)) 它仅在值为0时检索。没有意义
  • @yu_ominae 我只是试图把它放在一个标签中,我很惊讶为什么当值为 false 时它给我 -1。我做什么壳?

标签: vb.net gridview sqldatareader


【解决方案1】:

我做了一些愚蠢的事情,但它确实有效。代码是:

If dr.HasRows Then
            dr.Read()
            tbUsername.Text = dr.GetString(0)
            Dim deptid As Integer = CInt(dr(1))
            If deptid = -1 Then
                rblDept.SelectedIndex = 1
            Else
                rblDept.SelectedIndex = 0
            End If
        End If

效果很好。

谢谢大家。

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2018-01-19
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多