Acceuil vb.net(545) ADO dot net
|
| ADO dot net |
2011-02-22 |
|
Quelles classes utiliser pour me connecter à ma base de donnée
Le .NET Framework dispose de plusieurs namespaces permettant de se connecter à divers SGBD.
System.Data.SqlClient pour SQL Server
System.Data.Odbc pour les SGBD fournissant un pilote ODBC
Oracle.DataAcess (de ORACLE) pour ORACLE. Disponible en installant Oracle Data Provider .NET (ODP .NET)
System.Data.Oracle.Client (de Microsoft) pour Oracle
System.Data.OleDb pour tous les SGBD ayant un fournisseur OLE DB
se connecter à une base de données
Voici un exemple pour SQL Server
Imports System.Data.SqlClient
class adobasic
public shared Sub Main()
Try
'Chaîne de connexion
Dim connectString As String = "database=test;server=am01;User ID=samfisher;pwd=echelon"
'Objet connection
Dim connection As SqlConnection = new SqlConnection(connectString)
'Ouverture
connection.Open()
'Fermeture
connection.Close()
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.ToString())
End Try
End Sub
End Class
exécuter une requête SELECT
On utilise les objets Command et DataReader.
Exemple avec SQL Server
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
Dim connectString As String = "database=test;server=SRV01;User ID=samfisher;pwd=echelon"
Dim connection As SqlConnection = New SqlConnection(connectString)
connection.Open()
Dim command As SqlCommand = New SqlCommand("SELECT * FROM usr_contract", connection)
Dim reader As SqlDataReader = command.ExecuteReader
Dim row As Object() = Nothing
While reader.Read
If row Is Nothing Then
row = New Object(reader.FieldCount) {}
End If
reader.GetValues(row)
Dim i As Integer = 0
While i < row.GetLength(0)
If Not row(i) Is Nothing AndAlso Not (row(i) Is DBNull.Value) Then
Trace.Write(row(i).ToString())
Else
Trace.Write("NULL")
End If
If i < row.GetUpperBound(0) Then
Trace.Write(" | ")
End If
i = i + 1
End While
Trace.Write(vbCrLf)
End While
reader.Close()
connection.Close()
Comment exécuter une requête non SELECT
On utilise la méthode ExecuteNonQuery de l'objet Command.
Exemple avec SqlServer
'Chaîne de connexion
Dim connectString As String = "database=derivatives;server=SRV01;User ID=samfisher;pwd=echelon"
'Objet connection
Dim connection As SqlConnection = new SqlConnection(connectString)
'Ouverture
connection.Open()
'Objet Command
Dim command As SqlCommand = new SqlCommand("UPDATE usr_contract set ctr_n = ctr_n + 1", connection)
'Execution
Dim affectedrows As Integer = command.ExecuteNonQuery()
Console.WriteLine("Nombre de lignes affectées {0}", affectedrows)
'Fermeture connection
connection.Close()
Comment exécuter une requête dont le texte comprend une quote simple
Pour exécuter une requête contenant une quote simple, il faut utiliser les requêtes paramétrées
Il est néanmoins possible d'exécuter la requête en doublant les quotes de la
requête.
Dim sql As String = "SELECT * FROM pasta WHERE name = 'aujourd''hui'"
'Ou
Dim name As String = "aujourd'hui"
sql = "SELECT * FROM pasta WHERE name = " + name.Replace("'", "''")
Exécuter une requête paramétrée
Il est possible de passer des paramètres à des requêtes SQL.
Exemple avec SQL Server
using System.Data.SqlClient;
Imports System.Data.SqlClient
'Chaîne de connexion
Dim connectString As String = "database=equities;server=JV01;User ID=samfisher;pwd=echelon"
'Objet connection
Dim connection As SqlConnection = New SqlConnection(connectString)
'Ouverture
connection.Open()
'Objet Command
Dim command As SqlCommand = New SqlCommand("SELECT * FROM usr_contract WHERE " + _
"ctr_ref = @contract AND ctr_exg_ref = @exg", _
connection)
'Paramètres
command.Parameters.Add(New SqlParameter("@contract", SqlDbType.VarChar, 5))
command.Parameters("@contract").Value = "FTE"
command.Parameters.Add(New SqlParameter("@exg", SqlDbType.VarChar, 8))
command.Parameters("@exg").Value = "SBF"
'Object datareader
Dim reader As SqlDataReader = command.ExecuteReader()
Dim row As Object()
While reader.Read()
If row Is Nothing Then
row = New Object(reader.FieldCount - 1) {}
End If
reader.GetValues(row)
For i As Integer = 0 To row.GetLength(0) - 1
If Not row(i) Is DBNull.Value Then
Console.Write(row(i))
Else
Console.Write("NULL")
End If
If i < row.GetUpperBound(0) Then
Console.Write(" | ")
End If
Next
Console.WriteLine()
End While
'Fermeture reader
reader.Close()
'Fermeture base
connection.Close()
|
| Commentaires des visiteurs : |
|