Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De codevermeldingen op deze pagina laten zien hoe u gegevens ophaalt uit een database met behulp van de volgende ADO.NET technologieën:
ADO.NET gegevensproviders:
SqlClient (
Microsoft.Data.SqlClient)OleDb (
System.Data.OleDb)Odbc (
System.Data.Odbc)OracleClient (
System.Data.OracleClient)
ADO.NET Entity Framework:
EntityClient (
System.Data.EntityClient)
voorbeelden van ADO.NET gegevensprovider
De volgende codevermeldingen laten zien hoe u gegevens ophaalt uit een database met behulp van ADO.NET gegevensproviders. De gegevens worden geretourneerd in een DataReader. Zie Gegevens ophalen met behulp van een DataReader voor meer informatie.
SqlClient
Gebruik het Microsoft.Data.SqlClient NuGet-pakket om toegang te krijgen tot SQL Server met ADO.NET. De volgende C# en Visual Basic projecten zijn gericht op .NET 10 en .NET Framework 4.8.1 en verwijzen naar dit pakket. Gebruik de .NET 10 SDK om de projecten te bouwen.
In de voorbeelden wordt een query uitgevoerd op de dbo.Products tabel in de Northwind voorbeelddatabase. De SqlCommand selecteert producten met UnitPrice meer dan 5. De SqlParameter geeft de prijs als Money. De SqlDataReader leest de product-id, eenheidsprijs en productnaam in aflopende volgorde van eenheidsprijs. De using blokken (Using in Visual Basic) geven de reader, command en SqlConnection vrij.
Voordat u een van beide projecten uitvoert, stelt u de SQL_CONNECTION_STRING omgevingsvariabele in het proces waarmee het voorbeeld wordt gestart in. Gebruik bijvoorbeeld in Windows met geïntegreerde verificatie de volgende PowerShell-opdracht. Vervang <server> door de servernaam en configureer de server met een certificaat dat door de client wordt vertrouwd.
$env:SQL_CONNECTION_STRING = 'Server=<server>;Database=Northwind;Integrated Security=true;Encrypt=true;TrustServerCertificate=false'
Zie de syntaxis van de verbindingsreeks voor andere verificatieopties.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
Als u de Microsoft Entra ID verificatiemodi van het stuurprogramma wilt gebruiken, inclusief beheerde identiteit, installeert u ook het Microsoft.Data.SqlClient.Extensions.Azure NuGet-pakket. Zie Microsoft Entra ID-authenticatie voor installatie-instructies.
using System;
using System.Data;
using Microsoft.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = Environment.GetEnvironmentVariable("SQL_CONNECTION_STRING")
?? throw new InvalidOperationException("Set the SQL_CONNECTION_STRING environment variable.");
const string queryString =
"SELECT ProductID, UnitPrice, ProductName FROM dbo.Products "
+ "WHERE UnitPrice > @pricePoint ORDER BY UnitPrice DESC;";
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(queryString, connection))
{
command.Parameters.Add("@pricePoint", SqlDbType.Money).Value = 5m;
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader.GetInt32(0)}\t{reader.GetDecimal(1)}\t{reader.GetString(2)}");
}
}
}
}
}
Option Explicit On
Option Strict On
Imports System
Imports System.Data
Imports Microsoft.Data.SqlClient
Module Program
Sub Main()
Dim connectionString As String = Environment.GetEnvironmentVariable("SQL_CONNECTION_STRING")
If String.IsNullOrWhiteSpace(connectionString) Then
Throw New InvalidOperationException("Set the SQL_CONNECTION_STRING environment variable.")
End If
Const queryString As String =
"SELECT ProductID, UnitPrice, ProductName FROM dbo.Products " &
"WHERE UnitPrice > @pricePoint ORDER BY UnitPrice DESC;"
Using connection As New SqlConnection(connectionString),
command As New SqlCommand(queryString, connection)
command.Parameters.Add("@pricePoint", SqlDbType.Money).Value = 5D
connection.Open()
Using reader As SqlDataReader = command.ExecuteReader()
While reader.Read()
Console.WriteLine($"{reader.GetInt32(0)}{vbTab}{reader.GetDecimal(1)}{vbTab}{reader.GetString(2)}")
End While
End Using
End Using
End Sub
End Module
Voer vanuit een van beide snippet-projectmappen de opdracht dotnet run --framework net10.0 uit. Op Windows waarop .NET Framework 4.8.1 is geïnstalleerd, gebruikt u dotnet run --framework net481.
OleDb
In de code in dit voorbeeld wordt ervan uitgegaan dat u verbinding kunt maken met de voorbeelddatabase Microsoft Access Northwind. De code maakt een OleDbCommand om rijen in de tabel Producten te selecteren, waarbij u een OleDbParameter waarde toevoegt om de resultaten te beperken tot rijen met een UnitPrice die groter is dan de opgegeven parameterwaarde, in dit geval 5. Het OleDbConnection wordt geopend in een using blok, waardoor resources worden gesloten en verwijderd wanneer de code wordt afgesloten. De code voert de opdracht uit met behulp van een OleDbDataReader, en geeft de resultaten weer in het consolevenster.
using System;
using System.Data.OleDb;
using System.Runtime.Versioning;
// API is only supported on Windows
[SupportedOSPlatform("windows")]
static class Program
{
static void Main()
{
const string connectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ "c:\\Data\\Northwind.mdb;...";
// Provide the query string with a parameter placeholder.
const string queryString =
"SELECT ProductID, UnitPrice, ProductName from products "
+ "WHERE UnitPrice > ? "
+ "ORDER BY UnitPrice DESC;";
// Specify the parameter value.
const int paramValue = 5;
// Create and open the connection in a using block. This
// ensures that all resources will be closed and disposed
// when the code exits.
using (OleDbConnection connection =
new(connectionString))
{
// Create the Command and Parameter objects.
OleDbCommand command = new(queryString, connection);
command.Parameters.AddWithValue("@pricePoint", paramValue);
// Open the connection in a try/catch block.
// Create and execute the DataReader, writing the result
// set to the console window.
try
{
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"\t{reader[0]}\t{reader[1]}\t{reader[2]}");
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
Option Explicit On
Option Strict On
Imports System.Data.OleDb
Imports System.Runtime.Versioning
Public Class Program
<SupportedOSPlatform("Windows")>
Public Shared Sub Main()
' The connection string assumes that the Access
' Northwind.mdb is located in the c:\Data folder.
Dim connectionString As String = "..."
' Provide the query string with a parameter placeholder.
Dim queryString As String =
"SELECT ProductID, UnitPrice, ProductName from Products " _
& "WHERE UnitPrice > ? " _
& "ORDER BY UnitPrice DESC;"
' Specify the parameter value.
Dim paramValue As Integer = 5
' Create and open the connection in a using block. This
' ensures that all resources will be closed and disposed
' when the code exits.
Using connection As New OleDbConnection(connectionString)
' Create the Command and Parameter objects.
Dim command As New OleDbCommand(queryString, connection)
command.Parameters.AddWithValue("@pricePoint", paramValue)
' Open the connection in a try/catch block.
' Create and execute the DataReader, writing the result
' set to the console window.
Try
connection.Open()
Dim dataReader As OleDbDataReader =
command.ExecuteReader()
Do While dataReader.Read()
Console.WriteLine(
vbTab & "{0}" & vbTab & "{1}" & vbTab & "{2}",
dataReader(0), dataReader(1), dataReader(2))
Loop
dataReader.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Console.ReadLine()
End Using
End Sub
End Class
ODBC
In de code in dit voorbeeld wordt ervan uitgegaan dat u verbinding kunt maken met de voorbeelddatabase Microsoft Access Northwind. De code maakt een OdbcCommand om rijen in de tabel Producten te selecteren, waarbij u een OdbcParameter waarde toevoegt om de resultaten te beperken tot rijen met een UnitPrice die groter is dan de opgegeven parameterwaarde, in dit geval 5. Het OdbcConnection wordt geopend binnen een using blok, dat ervoor zorgt dat resources worden gesloten en opgeruimd wanneer de code wordt afgesloten. De code voert de opdracht uit met behulp van een OdbcDataReader, en geeft de resultaten weer in het consolevenster.
using System;
using System.Data.Odbc;
static class Program
{
static void Main()
{
const string connectionString =
"Driver={Microsoft Access Driver (*.mdb)};...";
// Provide the query string with a parameter placeholder.
const string queryString =
"SELECT ProductID, UnitPrice, ProductName from products "
+ "WHERE UnitPrice > ? "
+ "ORDER BY UnitPrice DESC;";
// Specify the parameter value.
const int paramValue = 5;
// Create and open the connection in a using block. This
// ensures that all resources will be closed and disposed
// when the code exits.
using (OdbcConnection connection =
new(connectionString))
{
// Create the Command and Parameter objects.
OdbcCommand command = new(queryString, connection);
command.Parameters.AddWithValue("@pricePoint", paramValue);
// Open the connection in a try/catch block.
// Create and execute the DataReader, writing the result
// set to the console window.
try
{
connection.Open();
OdbcDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"\t{reader[0]}\t{reader[1]}\t{reader[2]}");
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
}
Option Explicit On
Option Strict On
Imports System.Data.Odbc
Public Class Program
Public Shared Sub Main()
' The connection string assumes that the Access
' Northwind.mdb is located in the c:\Data folder.
Dim connectionString As String = "..."
' Provide the query string with a parameter placeholder.
Dim queryString As String =
"SELECT ProductID, UnitPrice, ProductName from Products " _
& "WHERE UnitPrice > ? " _
& "ORDER BY UnitPrice DESC;"
' Specify the parameter value.
Dim paramValue As Integer = 5
' Create and open the connection in a using block. This
' ensures that all resources will be closed and disposed
' when the code exits.
Using connection As New OdbcConnection(connectionString)
' Create the Command and Parameter objects.
Dim command As New OdbcCommand(queryString, connection)
command.Parameters.AddWithValue("@pricePoint", paramValue)
' Open the connection in a try/catch block.
' Create and execute the DataReader, writing the result
' set to the console window.
Try
connection.Open()
Dim dataReader As OdbcDataReader =
command.ExecuteReader()
Do While dataReader.Read()
Console.WriteLine(
vbTab & "{0}" & vbTab & "{1}" & vbTab & "{2}",
dataReader(0), dataReader(1), dataReader(2))
Loop
dataReader.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Console.ReadLine()
End Using
End Sub
End Class
OracleClient
In de code in dit voorbeeld wordt uitgegaan van een verbinding met DEMO.CUSTOMER op een Oracle-server. U moet ook een verwijzing naar de System.Data.OracleClient.dll toevoegen. De code retourneert de gegevens in een OracleDataReader.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
using System;
using System.Data.OracleClient;
static class Program
{
static void Main()
{
const string connectionString =
"Data Source=ThisOracleServer;Integrated Security=yes;";
const string queryString =
"SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER";
using (OracleConnection connection =
new(connectionString))
{
OracleCommand command = connection.CreateCommand();
command.CommandText = queryString;
try
{
connection.Open();
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"\t{reader[0]}\t{reader[1]}");
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Option Explicit On
Option Strict On
Imports Oracle.ManagedDataAccess.Client
Public Class Program
Public Shared Sub Main()
Dim connectionString As String =
"..."
Dim queryString As String =
"SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER"
Using connection As New OracleConnection(connectionString)
Dim command As OracleCommand = connection.CreateCommand()
command.CommandText = queryString
Try
connection.Open()
Dim dataReader As OracleDataReader =
command.ExecuteReader()
Do While dataReader.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}",
dataReader(0), dataReader(1))
Loop
dataReader.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Sub
End Class
Voorbeelden van Entity Framework
De volgende codevermeldingen laten zien hoe u gegevens ophaalt uit een gegevensbron door een query uit te voeren op entiteiten in een Entity Data Model (EDM). In deze voorbeelden wordt een model gebruikt op basis van de northwind-voorbeelddatabase. Zie Overzicht van Entity Framework voor meer informatie over Entity Framework.
LINQ naar entiteiten
De code in dit voorbeeld maakt gebruik van een LINQ-query om gegevens als categorieënobjecten te retourneren, die worden geprojecteerd als een anoniem type dat alleen de eigenschappen CategoryID en CategoryName bevat. Zie LINQ to Entities Overview (Overzicht van LINQ naar entiteiten) voor meer informatie.
using System;
using System.Linq;
using System.Data.Objects;
using NorthwindModel;
class LinqSample
{
public static void ExecuteQuery()
{
using (NorthwindEntities context = new NorthwindEntities())
{
try
{
var query = from category in context.Categories
select new
{
categoryID = category.CategoryID,
categoryName = category.CategoryName
};
foreach (var categoryInfo in query)
{
Console.WriteLine("\t{0}\t{1}",
categoryInfo.categoryID, categoryInfo.categoryName);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Option Explicit On
Option Strict On
Imports System.Linq
Imports System.Data.Objects
Imports NorthwindModel
Class LinqSample
Public Shared Sub ExecuteQuery()
Using context As NorthwindEntities = New NorthwindEntities()
Try
Dim query = From category In context.Categories _
Select New With _
{ _
.categoryID = category.CategoryID, _
.categoryName = category.CategoryName _
}
For Each categoryInfo In query
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
categoryInfo.categoryID, categoryInfo.categoryName)
Next
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Sub
End Class
Getypte ObjectQuery
De code in dit voorbeeld gebruikt een ObjectQuery<T> om gegevens als categorieënobjecten te retourneren. Zie Objectquery's voor meer informatie.
using System;
using System.Data.Objects;
using NorthwindModel;
class ObjectQuerySample
{
public static void ExecuteQuery()
{
using (NorthwindEntities context = new NorthwindEntities())
{
ObjectQuery<Categories> categoryQuery = context.Categories;
foreach (Categories category in
categoryQuery.Execute(MergeOption.AppendOnly))
{
Console.WriteLine("\t{0}\t{1}",
category.CategoryID, category.CategoryName);
}
}
}
}
Option Explicit On
Option Strict On
Imports System.Data.Objects
Imports NorthwindModel
Class ObjectQuerySample
Public Shared Sub ExecuteQuery()
Using context As NorthwindEntities = New NorthwindEntities()
Dim categoryQuery As ObjectQuery(Of Categories) = context.Categories
For Each category As Categories In _
categoryQuery.Execute(MergeOption.AppendOnly)
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
category.CategoryID, category.CategoryName)
Next
End Using
End Sub
End Class
EntityClient
De code in dit voorbeeld gebruikt een EntityCommand entiteits-SQL-query uit te voeren. Deze query retourneert een lijst met records die exemplaren van het entiteitstype Categorieën vertegenwoordigen. Een EntityDataReader wordt gebruikt voor toegang tot gegevensrecords in de resultatenset. Zie EntityClient-provider voor het Entity Framework voor meer informatie.
using System;
using System.Data;
using System.Data.Common;
using System.Data.EntityClient;
using NorthwindModel;
class EntityClientSample
{
public static void ExecuteQuery()
{
string queryString =
@"SELECT c.CategoryID, c.CategoryName
FROM NorthwindEntities.Categories AS c";
using (EntityConnection conn =
new EntityConnection("name=NorthwindEntities"))
{
try
{
conn.Open();
using (EntityCommand query = new EntityCommand(queryString, conn))
{
using (DbDataReader rdr =
query.ExecuteReader(CommandBehavior.SequentialAccess))
{
while (rdr.Read())
{
Console.WriteLine("\t{0}\t{1}", rdr[0], rdr[1]);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Option Explicit On
Option Strict On
Imports System.Data
Imports System.Data.Common
Imports System.Data.EntityClient
Imports NorthwindModel
Class EntityClientSample
Public Shared Sub ExecuteQuery()
Dim queryString As String = _
"SELECT c.CategoryID, c.CategoryName " & _
"FROM NorthwindEntities.Categories AS c"
Using conn As EntityConnection = _
New EntityConnection("name=NorthwindEntities")
Try
conn.Open()
Using query As EntityCommand = _
New EntityCommand(queryString, conn)
Using rdr As DbDataReader = _
query.ExecuteReader(CommandBehavior.SequentialAccess)
While rdr.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
rdr(0), rdr(1))
End While
End Using
End Using
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Sub
End Class
LINQ naar SQL
De code in dit voorbeeld maakt gebruik van een LINQ-query om gegevens als categorieënobjecten te retourneren, die worden geprojecteerd als een anoniem type dat alleen de eigenschappen CategoryID en CategoryName bevat. Dit voorbeeld is gebaseerd op de gegevenscontext Northwind. Zie Aan de slag voor meer informatie.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Northwind;
class LinqSqlSample
{
public static void ExecuteQuery()
{
using (NorthwindDataContext db = new NorthwindDataContext())
{
try
{
var query = from category in db.Categories
select new
{
categoryID = category.CategoryID,
categoryName = category.CategoryName
};
foreach (var categoryInfo in query)
{
Console.WriteLine("vbTab {0} vbTab {1}",
categoryInfo.categoryID, categoryInfo.categoryName);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Option Explicit On
Option Strict On
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports Northwind
Class LinqSqlSample
Public Shared Sub ExecuteQuery()
Using db As NorthwindDataContext = New NorthwindDataContext()
Try
Dim query = From category In db.Categories _
Select New With _
{ _
.categoryID = category.CategoryID, _
.categoryName = category.CategoryName _
}
For Each categoryInfo In query
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
categoryInfo.categoryID, categoryInfo.categoryName)
Next
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Sub
End Class