Использование SQLDataReader вместо набора записей

Я новичок в этом, и у меня был этот вопрос. Могу ли я использовать SQLDataReader вместо набора записей. Я хочу добиться следующего результата в SQLDataReader.

Dim dbConn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sqlstr As String = "SELECT Name,Status FROM table1 WHERE id=" + item_id.Value.ToString
rs.Open(SQL, dbConn)
While Not rs.EOF
   txtName.Text = rs.Fields.Item("Name").Value
   ddlstatus.SelectedIndex = 1
   rs.MoveNext()
End While
rs.Close()
rs = Nothing
dbConn.Close()
dbConn = Nothing

Могу ли я заменить набор записей на SQLDataReader, и если можно, покажите мне изменения в коде?


person nerts    schedule 28.01.2010    source источник


Ответы (3)


Настоятельно рекомендуется использовать шаблон using:

    Dim sConnection As String = "server=(local);uid=sa;pwd=PassWord;database=DatabaseName"
    Using Con As New SqlConnection(sConnection)
        Con.Open()
        Using Com As New SqlCommand("Select * From tablename", Con)
            Using RDR = Com.ExecuteReader()
                If RDR.HasRows Then
                    Do While RDR.Read
                        txtName.Text = RDR.Item("Name").ToString()
                    Loop
                End If
            End Using
        End Using
        Con.Close()
    End Using
person Chris Haas    schedule 28.01.2010
comment
Есть ли ответ С# для этого? - person Steam; 28.02.2014
comment
@Steam, вы можете использовать Telerik Converter для преобразования vb.net в C# или наоборот. - person Baby; 02.10.2014

Вам придется поменять несколько вещей, что-то вроде следующего.

Вот пример, вам нужно будет изменить это, чтобы достичь своей цели, но это показывает разницу.

Я также рекомендую использовать оператор «Использование» для управления подключением/считывателем. Кроме того, параметризованный запрос.

Dim sConnection As String = "server=(local);uid=sa;pwd=PassWord;database=DatabaseName"

Dim objCommand As New SqlCommand
objCommand.CommandText = "Select * From tablename"
objCommand.Connection = New SqlConnection(sConnection)
objCommand.Connection.Open()

Dim objDataReader As SqlDataReader = objCommand.ExecuteReader()

If objDataReader.HasRows Then
Do While objDataReader.Read()
Console.WriteLine(" Your name is: " & Convert.ToString(objDataReader(0)))
Loop
Else
Console.WriteLine("No rows returned.")
End If

objDataReader.Close()
objCommand.Dispose()
person Mitchel Sellers    schedule 28.01.2010

person    schedule
comment
Для этого не нужно создавать/загружать набор данных. - person Mitchel Sellers; 28.01.2010