我遇到了一個問題,在我的數據庫中,我有一列是0或1,指定用戶是管理員還是帳戶被暫停或不是。而在我的VB代碼中,我試圖找回那一點。示例代碼:在VB NET中從SQL數據庫檢索一個位列
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,如果這樣的存在我找不到它。因此,我希望能夠做出快速反應。
謝謝你,我希望它會被指定的地方:) – Angie