从VB .NET中的sql数据库中检索位列 [英] Retrieving a bit column from sql database in VB NET
问题描述
我遇到一个问题,其中在我的数据库中,我有一个位,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屋!