簡體   English   中英

使用數據閱讀器選擇和顯示數據的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM