NASIL yapılır: ado kullanarak Parametreleştirilmiş bir saklı yordam çağrısı.net ve Visual C#.NET

Makale çevirileri Makale çevirileri
Makale numarası: 310070 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

ado kullanmak için birkaç yol vardır.net, saklı bir yordamı çağırmak için geri dönüş değerleri alma ve parametreler de dahil olmak üzere, geri dönmek için:
  • DataSet nesnesine döndürülen satırları toplamak ve dönüş değerleri ve dönüş parametreleri ek olarak bu satırları çalışmak için kullanın.
  • Bu satırlar aracılığıyla ve dönüş değerleri toplama ve iade parametreleri taşımak için döndürülen satırları toplamak için DataReader nesnesini kullanın.
  • Dönüş değerleri ve dönüş parametreleri ile sonuçları ilk satırının ilk sütunundaki değeri döndürmek için ExecuteScalar yöntemini kullanın. Toplama işlevleri ile yararlıdır.
  • Dönüş parametreleri ve dönüş değerleri döndürmek ExecuteNonQuery yöntemini kullanın. Herhangi bir döndürülen satır atılır. Bu eylem sorguları yürütmek için kullanışlıdır.
Bu makalede, son üç yöntemi gösterilmiştir ve SqlCommand hem OleDbCommand nesneleri kullanır. Kullanmakta olduğunuz bir yönetilen sağlayıcı kodu kopyaladığınızdan emin olun. Hangi yönetilen sağlayıcı kullanmanız gerekir emin değilseniz, aşağıdaki Microsoft Developer Network Web sitesini ziyaret edin:
.net veri sağlayıcıları
Her bu makaledeki örneklerde, parameters Command nesnesi Parameters derlemesine eklenir. SqlCommand nesnesini kullandığınızda değil sahip eklediğiniz parametreleri belirli bir sırada, ancak parametreleri doğru adı olması gerekir. OleDbCommand nesnesini kullandığınızda, doğru sırayla parametreleri eklemek ve parametre adı kullanamazsınız.

Satır ve parametreleri dönmek için DataReader nesnesini kullanın.

DataReader nesnesi, salt okunur, salt ileri veri akışı döndürmek için kullanabilirsiniz. DataReader içerdiği bilgiler, bir saklı yordam gelebilir. Bu örnek, bir giriş ve çıkış parametresi ve dönüş parametreleri görüntülemek döndürülen kayıtlar arasında taşır saklı yordamı çalıştırmak için DataReader nesnesi kullanır.
  1. Microsoft sql Server çalıştıran sunucu üzerinde aaıdaki saklı yordamı oluşturun:
    Create Procedure TestProcedure
    (
      @au_idIN varchar (11),
      @numTitlesOUT Integer OUTPUT
    )
    AS 
    
    select A.au_fname, A.au_lname, T.title 
    from authors as A join titleauthor as TA on
    A.au_id=TA.au_id
    join titles as T
    on T.title_id=TA.title_id
    where A.au_id=@au_idIN
    set @numTitlesOUT = @@Rowcount
    return (5) 
    					
  2. Bir yeni Visual C# oluşturun.net Windows Application projesi.
  3. Böylece, bu ad daha sonra kodunuzda bildirimleri niteleme gerekmez kullanarakSistem ve System.Data ad deyimini. Bu kod, Form kodunu modülü üstüne ekleyin. Seçtiğiniz sağlayıcı kodu kopyalamaya dikkat edin.sql istemcisi
    using System.Data.SqlClient;
    					
    ole db Data Provider
    using System.Data.OleDb;
    					
  4. Özel Page_Load olay kodu aşağıdaki kodla değiştirin:sql istemci
    SqlConnection PubsConn = new SqlConnection 
    ("Data Source=server;integrated " + 
    "Security=sspi;initial catalog=pubs;");
    SqlCommand testCMD = new SqlCommand 
    ("TestProcedure", PubsConn);
    
    testCMD.CommandType = CommandType.StoredProcedure;
    
    SqlParameter RetVal = testCMD.Parameters.Add 
       ("RetVal", SqlDbType.Int);
    RetVal.Direction = ParameterDirection.ReturnValue;
    SqlParameter IdIn = testCMD.Parameters.Add 
      ("@au_idIN", SqlDbType.VarChar, 11);
    IdIn.Direction = ParameterDirection.Input;
    SqlParameter NumTitles = testCMD.Parameters.Add 
       ("@numtitlesout", SqlDbType.VarChar, 11);
    NumTitles.Direction = ParameterDirection.Output ;
            
    IdIn.Value = "213-46-8915";
    PubsConn.Open();
    
    SqlDataReader myReader = testCMD.ExecuteReader();
    Console.WriteLine ("Book Titles for this Author:");
    while (myReader.Read()) 
       {
         Console.WriteLine ("{0}", myReader.GetString (2));
       };
    myReader.Close() ;
    Console.WriteLine("Number of Rows: " + NumTitles.Value );
    Console.WriteLine("Return Value: " + RetVal.Value);
    					
    ole db Data Provider
    OleDbConnection PubsConn = new OleDbConnection 
       ("Provider=SQLOLEDB;Data Source=server;" + 
       "integrated Security=sspi;initial catalog=pubs;");
    OleDbCommand testCMD = new OleDbCommand 
       ("TestProcedure", PubsConn);
    
    testCMD.CommandType = CommandType.StoredProcedure;
    
    OleDbParameter RetVal = testCMD.Parameters.Add 
       ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;
    OleDbParameter IdIn = testCMD.Parameters.Add 
       ("@au_idIN", OleDbType.VarChar, 11);
    IdIn.Direction = ParameterDirection.Input;
    OleDbParameter NumTitles = testCMD.Parameters.Add 
       ("@numtitlesout", OleDbType.VarChar, 11);
    NumTitles.Direction = ParameterDirection.Output;
            
    IdIn.Value = "213-46-8915";
    
    PubsConn.Open();
    
    OleDbDataReader myReader = testCMD.ExecuteReader();
    Console.WriteLine ("Book Titles for this Author:");
    while (myReader.Read()) 
       {
         Console.WriteLine ("{0}", myReader.GetString (2));
       };
    myReader.Close() ;
    Console.WriteLine("Number of Rows: " + NumTitles.Value );
    Console.WriteLine("Return Value: " + RetVal.Value);
    					
  5. Connection nesnesi, sql Server çalıştıran bilgisayara işaret eden bağlantı dizesini değiştirin.
  6. Kod çalıştırabilir. DataReader kayıtları alır ve sonra da parametre değerlerini döndürür dikkat edin. Döndürülen kayıtlar arasında gezinmek için DataReader nesnesinin Read yöntemini kullanabilirsiniz.

    Output penceresi, iki kitap başlıkları, 5 ve (2) kayıt sayısını içeren çıkış parametresi dönüş değerini görüntüler. Parametre değerlerini görmek için DataReader kodunda kapatmalısınız dikkat edin. Ayrıca, tüm kayıtları DataReader kapalıysa dönüş parametreleri görmek için gitmek gerekmez unutmayın.

Command nesnesinin ExecuteScalar yöntemini kullanın.

Parametre değerleri almak için Command nesnesinin ExecuteScalar yöntemini kullanabilirsiniz. Ayrıca, ExecuteScalar saklı yordamın ilk satırının ilk sütununu verir. Aşağıdaki örnekte olduğu gibi toplama işlevleri için yararlıdır.
  1. sql Server çalıştıran sunucu üzerinde aaıdaki saklı yordamı oluşturun:
    Create Procedure TestProcedure2
    (
      @au_idIN varchar (11)
    )
    As
    /* set nocount on */ 
    select count (T.title) 
    from authors as A join titleauthor as TA on
    A.au_id=TA.au_id
    join titles as T
    on T.title_id=TA.title_id
    where A.au_id=@au_idIN
    Return(5)
    					
  2. Bir yeni Visual C# oluşturun.net Windows Application projesi.
  3. Böylece, bu ad daha sonra kodunuzda bildirimleri niteleme gerekmez kullanarakSistem ve System.Data ad deyimini. Bu kod, Form kodunu modülü üstüne ekleyin. Seçtiğiniz sağlayıcı kodu kopyaladığınızdan emin olun.sql istemcisi
    using System.Data.SqlClient;
    					
    ole db Data Provider
    using System.Data.OleDb;
    					
  4. Page_Load olay aşağıdaki kodu ekleyin:sql istemci
    string strCount;
    SqlConnection PubsConn = new SqlConnection 
       ("Data Source=server;integrated " + 
       "Security=sspi;initial catalog=pubs;");
    SqlCommand testCMD = new SqlCommand 
       ("TestProcedure2", PubsConn);
    
    testCMD.CommandType = CommandType.StoredProcedure;
    
    SqlParameter RetVal = testCMD.Parameters.Add 
       ("RetVal", SqlDbType.Int);
    RetVal.Direction = ParameterDirection.ReturnValue;
    SqlParameter IdIn = testCMD.Parameters.Add 
       ("@au_idIN", SqlDbType.VarChar, 11);
    IdIn.Direction = ParameterDirection.Input;
            
    IdIn.Value = "213-46-8915";
    
    PubsConn.Open();
    
    strCount =testCMD.ExecuteScalar ().ToString() ;
    
    Console.WriteLine("Number of Rows: " + strCount );
    Console.WriteLine("Return Value: " + RetVal.Value);
    					
    ole db Data Provider
    string strCount;
    OleDbConnection PubsConn = new OleDbConnection 
       ("Provider=SQLOLEDB;Data Source=server;" + 
       "integrated Security=sspi;initial catalog=pubs;");
    OleDbCommand testCMD = new OleDbCommand 
       ("TestProcedure2", PubsConn);
    
    testCMD.CommandType = CommandType.StoredProcedure;
    
    OleDbParameter RetVal = testCMD.Parameters.Add 
       ("RetVal", OleDbType.Integer);
    RetVal.Direction = ParameterDirection.ReturnValue;
    OleDbParameter IdIn = testCMD.Parameters.Add 
       ("@au_idIN", OleDbType.VarChar, 11);
    IdIn.Direction = ParameterDirection.Input;
    
    IdIn.Value = "213-46-8915";
    
    PubsConn.Open();
    
    strCount = testCMD.ExecuteScalar().ToString() ;
    
    Console.WriteLine("Number of Rows: " + strCount);
    Console.WriteLine("Return Value: " + RetVal.Value);
    					
  5. Connection nesnesi, sql Server çalıştıran bilgisayara işaret eden bağlantı dizesini değiştirin.
  6. Kod çalıştırabilir. ExecuteScalar yöntemini Command nesnesinin parameters döndürdüğüne dikkat edin. ExecuteScalar de 1, döndürülen satır kümesi satır 1 sütun değeri döndürür. Bu nedenle, intCount saklı yordamdan gelen count işlevinin sonucu değeridir.

Command nesnesinin ExecuteNonQuery yöntemini kullanın.

Bu örnek, sorgu çalıştırmak ve parametre değerlerini vermesini ExecuteNonQuery yöntemini kullanır. ExecuteNonQuery , sorgu çalıştıktan sonra etkilenen kayıtların sayısı da verir. Ancak, ExecuteNonQuery herhangi bir satır veya sütun saklı yordam döndürmez.

Yalnızca değiştirilen satırların sayısını bilmek zorunda, INSERT, update veya delete deyimleri kullanın ExecuteNonQuery yöntemini yararlıdır. Sorgu tarafından etkilenen satır için bir saklı yordam bir select deyimi kullanıyorsunuz -1 alırsınız.
  1. sql Server çalıştıran bilgisayarda aşağıdaki saklı yordam oluştur:
    Create Procedure TestProcedure3
    (
      @au_idIN varchar (11),
      @au_fnam varchar (30)
    )
    
    As
    /* set nocount on */ 
    Update authors set au_fname = @au_fnam
    where au_id = @au_idin	
    return (5)
    					
  2. Bir yeni Visual C# oluşturun.net Windows Application projesi.
  3. Böylece, bu ad daha sonra kodunuzda bildirimleri niteleme gerekmez kullanarakSistem ve System.Data ad deyimini. Bu kod, Form kodunu modülü üstüne ekleyin. Seçtiğiniz sağlayıcı kodu kopyaladığınızdan emin olun.sql istemcisi
    using System.Data.SqlClient;
    					
    ole db Data Provider
    using System.Data.OleDb;
    					
  4. Özel Form1_Load olay Form1 kod modülünde aşağıdaki kodu aşağıdaki kodla değiştirin:sql istemci
    string strRowAffect;
    SqlConnection PubsConn = new SqlConnection 
       ("Data Source=server;integrated Security=sspi;" + 
       "initial catalog=pubs;");
    SqlCommand testCMD = new SqlCommand 
       ("TestProcedure3", PubsConn);
    
    testCMD.CommandType = CommandType.StoredProcedure;
    
    SqlParameter RetVal = testCMD.Parameters.Add 
       ("RetVal", SqlDbType.Int);
    RetVal.Direction = ParameterDirection.ReturnValue;
    SqlParameter IdIn = testCMD.Parameters.Add 
       ("@au_idIN", SqlDbType.VarChar, 11);
    IdIn.Direction = ParameterDirection.Input;
    SqlParameter FnameIn = testCMD.Parameters.Add 
       ("@au_fnam", SqlDbType.VarChar, 30);
    FnameIn.Direction = ParameterDirection.Input;
    
    IdIn.Value = "213-46-8915";
    FnameIn.Value = "Marjorie";
    
    PubsConn.Open();
    
    strRowAffect =testCMD.ExecuteNonQuery ().ToString() ;
    
    Console.WriteLine("Number of Rows: " + strRowAffect );
    Console.WriteLine("Return Value: " + RetVal.Value);
    					
    ole db Data Provider
    int intRowAffected;
    OleDbConnection PubsConn = new OleDbConnection 
       ("Provider=SQLOLEDB;Data Source=server;" + 
       "integrated Security=sspi;initial catalog=pubs;");
    OleDbCommand testCMD = new OleDbCommand 
       ("TestProcedure3", PubsConn);
    
    testCMD.CommandType = CommandType.StoredProcedure;
    
    OleDbParameter RetVal = testCMD.Parameters.Add 
       ("RetVal", OleDbType.Integer);
    RetVal.Direction = ParameterDirection.ReturnValue;
    OleDbParameter IdIn = testCMD.Parameters.Add 
       ("@au_idIN", OleDbType.VarChar, 11);
    IdIn.Direction = ParameterDirection.Input;
    OleDbParameter FnameIn = testCMD.Parameters.Add
       ("@au_fname", OleDbType.VarChar, 30);
    FnameIn.Direction = ParameterDirection.Input;
    
    IdIn.Value = "213-46-8915";
    FnameIn.Value = "Marjorie";
    
    PubsConn.Open();
    intRowAffected = testCMD.ExecuteNonQuery();
    
    Console.WriteLine("Number of Rows affected: " + intRowAffected);
    Console.WriteLine(RetVal.Value);
    					
  5. Connection nesnesi, sql Server çalıştıran bilgisayara işaret eden bağlantı dizesini değiştirin.
  6. Kod çalıştırabilir. Output penceresi, (intRowAffect) etkilenen satırların sayısını ve parametre değeri görüntüler.

Referanslar

Ek bilgi için aşağıdaki msdn Web sitelerini ziyaret edin:
Giriş.net Framework sınıf kitaplığı

DataReader nesnesini kullanarak veri alma

Özellikler

Makale numarası: 310070 - Last Review: 12 Haziran 2012 Salı - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB310070 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 310070

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com