SqlDataReader ve Toplu Sorgular (Batch Queries)
SqlDataReader ile toplu sorguları nasıl okuya bileceğimizi inceleyeceğiz. Toplu sorgular aslında birbirinden noktalı virgül(;) ile ayrılmış sorgulardır. Birden çok sorguyu bu şekilde bir araya getirerek okuma işlemini tek seferde gerçekleştirmiş oluruz. SqlDataReader nesnesinin Read metodu false değerini döndürdükten sonra geçerli bir kayıt kümesi olup olmadığının kontrolünü yaparak toplu sorgularımızı çalıştırmış olacağız. Bu konuda bize yardımcı olacak metodumuz NextResult(). Bu metot geriye True,False değerini döndürür. Okuma işlemi bittiken sonra başka bir kayıt kümesi var ise True döndüren NextResult metodu yardımı ile tekrar While döngüsüne girip kayıt kümemizi okuyabiliriz. Ta ki kayıt kümesi bitene kadar.
Ben örneğimde 3 farklı sorgu çalıştırıp ekrana yazdıracağım.
[csharp]
string db = "Data Source=.;Initial Catalog=WorkDB;User ID=sa;Password=1";
SqlConnection con = new SqlConnection(db);
con.Open();
SqlCommand cmd = new SqlCommand("select UserName from tblUsers;select CategoryName from tblCategory;select SaleType from tblSales",con);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
Console.WriteLine("<—————->");
do
{
while (dr.Read())
{
Console.WriteLine(dr[0]);
}
Console.WriteLine("<—————->");
} while (dr.NextResult());
dr.Dispose();
[/csharp]
Görüldüğü gibi tek bir SqlDataReader ile birden çok kayıt kümesi okumuş olduk.
Faydalı olması dileğiyle..