[英]Issues with Selecting and Displaying Data using Data Reader
我一直在練習和使用VB.NET和ASP.NET中的代碼。 我有一個程序,其中有一個GridView名稱gvPerson。 在GridView中,有一個人員列表及其詳細信息,例如姓名,徽章編號,雇用日期等。在GridView頂部,我具有鏈接按鈕控件:添加人員,發布人員設備,編輯人員和刪除人員。 因此,例如,當我從gridview中選擇某人,然后單擊“發行人員設備”時,所選人的姓名和ID將出現在出現的模式表單上。 現在的問題是,當我運行代碼時,出現一個錯誤,指出我的DataAdapter中沒有任何內容。 對此我有點陌生,我相信我的邏輯有些偏離,我可能錯過了一些東西。 這是我所擁有的:
Dim strSelectedPersonID As String
Dim strSelectedPersonName As String
Dim strSelectPosition As String
Dim strBadgeNo As String
If e.CommandName = "Select" Then
idx = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gvPerson.Rows(idx)
strSelectedPersonID = row.Cells(1).Text
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString2").ToString())
conn.Open()
Dim dsPerson As New DataSet()
Dim dr As SqlDataReader
Dim da As SqlDataAdapter
Dim strSelectCmd As String = "SELECT * FROM Personnel WHERE SempID = @SempID "
Dim cmd As New SqlCommand(strSelectCmd, conn)
cmd.Parameters.AddWithValue("@SempID", strSelectedPersonID)
cmd.Connection = conn
da.SelectCommand = cmd
dr = cmd.ExecuteReader()
If dr.HasRows Then
While (dr.Read())
strSelectPosition = dr(3).ToString
strBadgeNo = dr(4).ToString
End While
End If
strSelectedPersonName = cmd.ExecuteScalar()
tbEditPosition.Text = strSelectPosition
tbEditBadge.Text = strBadgeNo
conn.Close()
End Using
End If
tbSecID.Text = strSelectedPersonID
tbSecName.Text = strSelectedPersonName
編輯:這是我使用DataAdapter的代碼:
Try
strconn.Open()
Dim sQuery As String = "SELECT * FROM tblUsers WHERE Username = @Username AND Password = @Password AND Status= @Status"
Dim datareader As SqlDataReader
Dim adapter As New SqlDataAdapter
Dim parameter As New SqlParameter
Dim command As SqlCommand = New SqlCommand(sQuery, strconn)
command.Parameters.AddWithValue("@Username", txtUsername.Text)
command.Parameters.AddWithValue("@Password", txtPassword.Text)
command.Parameters.AddWithValue("@Status", 1)
command.Connection = strconn
adapter.SelectCommand = command
datareader = command.ExecuteReader()
If datareader.HasRows Then
While (datareader.Read())
strUserID = datareader(0).ToString
strUserFname = datareader(3).ToString
strUserLname = datareader(4).ToString
End While
xPersonID = strUserID
xPersonName = strUserFname + " " + strUserLname
'MsgBox("Login Successfull! ", vbInformation, vbOKOnly)
Response.Redirect("http://localhost:00000/index.aspx")
datareader.Close()
LoginOk = True
Else
Response.Write("<SCRIPT LANGUAGE=""JavaScript""> alert('Invalid Username or Password!');</script>")
' MsgBox("Invalid Username or Password! ", vbInformation, vbOKOnly)
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.Focus()
End If
datareader.Close()
Catch ex As Exception
'MsgBox(ex.Message)
End Try
謝謝各位的意見。 我使用SqlDataReader瀏覽表並選擇用戶的詳細信息。 現在一切似乎都正常。 這是我想出的:
Dim strSelectedPersonID As String
Dim strSelectedPersonName As String
Dim strSelectPosition As String
Dim strBadgeNo As String
Dim strDateHired As String
Dim strContactNo As String
Dim strEmail As String
Dim strEmerContactNo As String
Dim strContactPerson As String
Dim strRemarks As String
If e.CommandName = "Select" Then
idx = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = gvPerson.Rows(idx)
strSelectedPersonID = row.Cells(1).Text
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString2").ToString())
conn.Open()
Dim dsPerson As New DataSet()
Dim dr As SqlDataReader
Dim strSelectCmd As String = "SELECT * FROM Personnel WHERE SempID = @SempID "
Dim cmd As New SqlCommand(strSelectCmd, conn)
cmd.Parameters.AddWithValue("@SempID", strSelectedPersonID)
cmd.Connection = conn
dr = cmd.ExecuteReader()
If dr.HasRows Then
While (dr.Read())
strSelectedPersonName = dr(1).ToString
strSelectPosition = dr(2).ToString
strBadgeNo = dr(3).ToString
strDateHired = dr(4).ToString
strContactNo = dr(5).ToString
strEmail = dr(6).ToString
strEmerContactNo = dr(7).ToString
strContactPerson = dr(8).ToString
strRemarks = dr(10).ToString
End While
End If
'strSelectedPersonName = cmd.ExecuteScalar()
tbSecName.Text = strSelectedPersonName
tbEditPosition.Text = strSelectPosition
tbEditBadge.Text = strBadgeNo
tbEditHireDate.Text = strDateHired
tbEditContactNo.Text = strContactNo
tbEditEmail.Text = strEmail
tbEmerNo.Text = strEmerContactNo
tbEditContactPerson.Text = strContactPerson
tbEditRemarks.Text = strRemarks
conn.Close()
End Using
End If
tbEditName.Text = strSelectedPersonName
tbSecID.Text = strSelectedPersonID
tbSecName.Text = strSelectedPersonName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.