从VB .NET中的sql数据库中检索位列 [英] Retrieving a bit column from sql database in VB NET

查看:158
本文介绍了从VB .NET中的sql数据库中检索位列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到一个问题,其中在我的数据库中,我有一个位,0或1指定一个用户是管理员还是帐户被暂停或不是。在我的VB代码,我试图检索该位。示例代码:

I have encountered a problem where in my database I have a column that is a bit either 0 or 1 specifying if a user is an admin or is account suspended or not. And in my VB code I am trying to retrieve that bit. Example code:

    Dim dtRequests As DataTable
    dtRequests = New DataTable("Users")
    dtRequests.Columns.Add("SESLoginID", System.Type.GetType("System.Int32"))
    dtRequests.Columns.Add("fullname", System.Type.GetType("System.String"))
    dtRequests.Columns.Add("SESSuspended", System.Type.GetType("System.Byte"))
    dtRequests.Columns.Add("SESAdmin", System.Type.GetType("System.Byte"))
    dtRequests.Columns.Add("OfficeName", System.Type.GetType("System.String"))

    cmdoledb = New SqlCommand("SELECT SESLoginID, SESFirstName + ' ' + SESLastName As fullname , SESSuspended, SESAdmin, OfficeID from SESLogin where (SESEmail Like '%" & keyword & "%' or SESFirstName + ' ' + SESLastName like '%" & keyword & "%' or SESLastName like '%" & keyword & "%') order by SESFirstName;", objConnect)
    cmdoledb.Parameters.AddWithValue("@pid", pid)
    objConnect.Open()

    Dim rdr As SqlDataReader
    Dim myItem As ListItem = New ListItem()
    rdr = cmdoledb.ExecuteReader()

    While rdr.Read()
        Dim newrow As DataRow
        newrow = dtRequests.NewRow
        newrow.Item("SESLoginID") = rdr.GetInt32(0)
        newrow.Item("fullname") = rdr.GetString(1)
        newrow.Item("SESSuspended") = rdr.GetByte(2)  // Specified cast is not valid.
        newrow.Item("SESAdmin") = rdr.GetByte(3) // Specified cast is not valid.

        Dim officeid As Integer = rdr.GetInt32(4)
        Dim officename As String = ""

        cmdldb = New SqlCommand("SELECT OfficeName from Office where OfficeID = @offid", objConnected)
        cmdldb.Parameters.AddWithValue("@offid", officeid)
        objConnected.Open()

        officename = cmdldb.ExecuteScalar()
        newrow.Item("OfficeName") = officeid
        objConnected.Close()
        dtRequests.Rows.Add(newrow)
    End While

我试图获取rdr.GetByte(3),这告诉我转换无效,但没有函数会说GetBit,我找不到它。因此,我希望能快速回应。

I tried getting rdr.GetByte(3), this tells me cast not valid, but there is no function of which will say GetBit, and if such exists I could not find it. Thus Im hoping for a quick response.

推荐答案

尝试 rdr.GetBoolean $ c>获取位值。 SQL Server中的位与VB中的布尔相同,除了它使用1和0而不是true和false。

Try rdr.GetBoolean(3) to get Bit values. A bit in SQL Server is the same as a boolean in VB, except it uses 1 and 0 instead of true and false.

这篇关于从VB .NET中的sql数据库中检索位列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆