2010-01-28 2 views
7

Je suis nouveau et j'ai eu cette question. Puis-je utiliser SQLDataReader au lieu d'un jeu d'enregistrements. Je veux atteindre le résultat suivant dans un SQLDataReader.Utilisation de SQLDataReader à la place du jeu d'enregistrements

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 

Puis-je remplacer par SQLDataReader et recordset si je peux vous pouvez me montrer les s'il vous plaît changements dans le code?

Répondre

0
Dim rdrDataReader As SqlClient.SqlDataReader 
Dim cmdCommand As SqlClient.SqlCommand 
Dim dtsData As New DataSet 
Dim dtbTable As New DataTable 
Dim i As Integer 
Dim SQLStatement as String 

msqlConnection.Open() 

cmdCommand = New SqlClient.SqlCommand(SQLStatement, msqlConnection) 

rdrDataReader = cmdCommand.ExecuteReader() 

For i = 0 To (rdrDataReader.FieldCount - 1) 
    dtbTable.Columns.Add(rdrDataReader.GetName(i), rdrDataReader.GetFieldType(i)) 
Next 
dtbTable.BeginLoadData() 

Dim values(rdrDataReader.FieldCount - 1) As Object 

While rdrDataReader.Read 
    rdrDataReader.GetValues(values) 
    dtbTable.LoadDataRow(values, True) 
End While 
dtbTable.EndLoadData() 

dtsData.Tables.Add(dtbTable) 

msqlConnection.Close() 

Return dtsData 
+1

Il n'y a pas besoin de créer/charger un jeu de données pour cela. –

2

Vous devrez permuter quelques choses, quelque chose de semblable à ce qui suit.

Voici un exemple, vous devrez le modifier pour atteindre votre objectif, mais cela montre la différence.

Je recommande également d'utiliser une instruction "Using" pour gérer la connexion/le lecteur. En outre, une requête paramétrée.

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() 
15

Son recommande fortement que vous utilisez le modèle 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 
+0

Y at-il une réponse C# pour cela? – Steam

+2

@Steam vous pouvez utiliser [Telerik Converter] (http://converter.telerik.com/) pour convertir 'vb.net' en' C# 'ou vice versa – Baby

Questions connexes