Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: .NET Framework
.NET
.NET Standard
DataReader kullanarak veri almak için Command nesnesinin bir örneğini oluşturun ve ardından bir veri kaynağından satır almak için Command.ExecuteReader'ı çağırarak bir DataReader oluşturun. DataReader, yordamsal mantığın bir veri kaynağından gelen sonuçları sırayla verimli bir şekilde işlemesine olanak tanıyan bir veri akışı sağlar.
Uyarı
Veriler bellekte önbelleğe alınmadığı için büyük miktarda veri alırken DataReader iyi bir seçimdir.
Aşağıdaki örnekte, geçerli bir reader temsil eden ve command geçerli bir Command nesnesini temsil eden DataReader kullanımı gösterilmektedir.
reader = command.ExecuteReader();
Sorgu sonuçlarından bir satır almak için DataReader.Read yöntemini kullanın. Döndürülen satırın her sütununa, sütunun adını veya sıra numarasını DataReader'a geçirerek erişebilirsiniz. Ancak, en iyi performans için DataReader kendi yerel veri türlerindeki sütun değerlerine (GetDateTime, GetDouble, GetGuid, GetInt32 vb.) erişmenizi sağlayan bir dizi yöntem sağlar. Veri sağlayıcısına özgü DataReaders için tip tanımlı erişimci yöntemlerinin listesi için bkz SqlDataReader. Temel alınan veri türünü bildiğinizde, belirli tür erişimci yöntemlerinin kullanılması, sütunun değerini alırken gereken tür dönüştürme miktarını azaltır.
Aşağıdaki örnek bir DataReader nesnesi aracılığıyla yinelenir ve her satırdan iki sütun döndürür.
static void HasRows(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM Categories;",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Check if the DataReader has any row.
if (reader.HasRows)
{
// Obtain a row from the query result.
while (reader.Read())
{
Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
}
else
{
Console.WriteLine("No rows found.");
}
// Always call the Close method when you have finished using the DataReader object.
reader.Close();
}
}
DataReader'ı kapatma
Close() yöntemini, DataReader nesnesini kullanmayı bitirdiğinizde her zaman çağırın.
Uyarı
Komutunuz çıkış parametreleri veya dönüş değerleri içeriyorsa, DataReader kapatılana kadar bu değerler kullanılamaz.
Önemli
DataReader açıkken, Bağlantı yalnızca bu DataReader tarafından kullanılır. Özgün DataReader kapatılana kadar, başka bir DataReader oluşturma dahil olmak üzere Bağlantı için herhangi bir komut yürütemezsiniz.
Uyarı
Sınıfınızın Finalize yönteminde Bir Bağlantıda, DataReader'da veya başka bir yönetilen nesnede Close veya Dispose çağırmayın. Sonlandırıcıda yalnızca sınıfınızın doğrudan sahip olduğu yönetilmeyen kaynakları serbest bırakın. Sınıfınız yönetilmeyen kaynaklara sahip değilse, sınıf tanımınıza Bir Finalize yöntemi eklemeyin. Daha fazla bilgi için bkz . Çöp Toplama.
NextResult kullanarak birden çok sonuç kümesi alma
DataReader birden çok sonuç kümesi döndürürse, sonuç kümelerini sırayla yinelemek için NextResult yöntemini çağırın. Aşağıdaki örnek, SqlDataReader iki SELECT deyiminin sonuçlarını ExecuteReader yöntemini kullanarak işlemeyi gösterir.
static void RetrieveMultipleResults(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM dbo.Categories;" +
"SELECT EmployeeID, LastName FROM dbo.Employees",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Check if the DataReader has any row.
while (reader.HasRows)
{
Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
reader.GetName(1));
// Obtain a row from the query result.
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
// Hop to the next result-set.
reader.NextResult();
}
// Always call the Close method when you have finished using the DataReader object.
reader.Close();
}
}
DataReader'dan şema bilgilerini alma
DataReader açıkken GetSchemaTable yöntemini kullanarak geçerli sonuç kümesi hakkındaki şema bilgilerini alabilirsiniz. GetSchemaTable , geçerli sonuç kümesinin şema bilgilerini içeren satır ve sütunlarla doldurulmuş bir DataTable nesne döndürür. DataTable, sonuç kümesinin her sütunu için bir satır içerir. Şema tablosunun her sütunu, sonuç kümesinin satırlarında döndürülen sütunların bir özelliğine eşler; burada ColumnName özelliğin adı ve sütunun değeri özelliğin değeridir. Aşağıdaki örnek DataReader için şema bilgilerini yazar.
static void GetSchemaInfo(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM Categories;",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Retrieve schema information about the current result-set.
DataTable schemaTable = reader.GetSchemaTable();
foreach (DataRow row in schemaTable.Rows)
{
foreach (DataColumn column in schemaTable.Columns)
{
Console.WriteLine(String.Format("{0} = {1}",
column.ColumnName, row[column]));
}
}
// Always call the Close method when you have finished using the DataReader object.
reader.Close();
}
}
Ayrıca bakınız
- Veri Adaptörleri (DataAdapters) ve Veri Okuyucular (DataReaders)
- Komutlar ve parametreler
- Veritabanı şema bilgileri alınıyor
- SQL Server için Microsoft ADO.NET