Fonksiyonları kullanarak C # ve PostgreSQL

ediptufekciler
21-07-2012, 19:57   |  #1  
ediptufekciler avatarı
OP Yeni Üye
Teşekkür Sayısı: 6
30 mesaj
Kayıt Tarihi:Kayıt: Tem 2012

 

Fonksiyonları kullanarak C # ve PostgreSQL kullanarak temel CRUD PostgreSQL SQL Server gibi diğer veritabanlarında bulunan saklı yordam oluşturma geleneksel


şekilde desteklemiyor, Oracle vb ünlü oluşturun Usulü sözdizimi yoksundur. Ancak, biz functions.We yardımıyla yapabilirsiniz saklı yordamlar bir fonksiyon


yapamaz birden çok sonuç kümeleri döndüren biliyorum. PostgreSQL biz refcursors bir dizi returing yapabilirsiniz. Bu yazıda önceki örnekte uzatarak bunu


nasıl bakacağız Önce bize ilk önceki örnekte bulunan Player tablo (tblOyuncular) oluşturmak environment.Let yaratacak

CREATE TABLE tblOyuncular (

       OyuncuAdi Varchar(50)

                               ,Para Int

                               ,Uyelikleri Varchar(50)

                               ,Yas Int

);

Sonraki bize altında gibi fonksiyonlar oluşturmasına izin Tüm Kayıt Fonksiyonu seçin oluşturma

CREATE OR REPLACE FUNCTION fnFetchPlayerRecord() RETURNS SETOF refcursor AS

 

'DECLARE

recordSet refcursor;

BEGIN

 

OPEN recordSet FOR

Select * from tblOyuncular;

RETURN NEXT recordSet ;

 

RETURN;

END;'

LANGUYAS plpgsql;

 

 

Biz dönüş türü refcursor olduğunu öğrenebilirsiniz. Bu şekilde dil türü plpgsql olduğunu client.Also geri rekor setleri gönderebilirsiniz İşlev Ekle'yi oluşturma

CREATE OR REPLACE FUNCTION fnInsertRecord(varchar,int,varchar,int) RETURNS void AS

'BEGIN

                               Insert Into tblOyuncular(OyuncuAdi,Yas,Uyelikleri,Para) values ($1,$2,$3,$4);

END;'

LANGUYAS plpgsql;

 

Ikinci ve dördüncü tamsayıdır tipi ve döner void iken, bu fonksiyonu Varchar tip 4 parameters.The birinci ve üçüncü bir varlık kabul eder.Değerleri konumsal


parametre (örneğin $ 1, $ 2, vb) kullanılarak sıkıştırılan gözlemleyin. Biz sadece veri türü söz, PostgreSQL biz adı Parametreler ve type.But, bu


veritabanlarında CREATE PROCEDURE deyimi ilan zamanında parametresi name.Also kullanarak bunu nereye Oracle veya SQL Server farklı yeterlidir Güncelleme


Fonksiyonu oluşturma

 

CREATE OR REPLACE FUNCTION fnUpdateRecord(varchar,int) RETURNS void AS

'BEGIN                

                               Update tblOyuncular Set Para = Para + $2 Where OyuncuAdi = $1;                       

END;'

LANGUYAS plpgsql;

 

 

 

 

Silme Fonksiyonu oluşturma

CREATE OR REPLACE FUNCTION fnDeleteRecord(varchar) RETURNS void AS

'BEGIN                

                               Delete From tblOyuncular Where OyuncuAdi = $1;                       

END;'

LANGUYAS plpgsql;

 

Yani, bizim operasyon için temel komut her türlü yazdım Şimdi öncelikle bir başvuru eklemek gerekir bizim DAL layer.We içinde arayüz koduna bakacağız


1.Mono.Security.dll 2.Npgsql.dll Şimdi biz DAL katmanı bu işlevleri çağırmak nasıl gibi bakacağız Öncelikle bize nasıl (1. işlev) fnFetchPlayerRecord


fonksiyonu çağırıyoruz içine bakalım

public DataTable GetAllRecords()

{

 

                DataTable dtRecord = new DataTable();          

 

                try

                {

                               using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))

                               {

                                               // Open the PgSQL Connection.              

                                               pgsqlConnection.Open();

 

                                               string selectCommand = "fnFetchPlayerRecord";                  

 

                                               using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(selectCommand, pgsqlConnection))

                                               {

                                                               using (NpgsqlTransaction tran = pgsqlConnection.BeginTransaction())

                                                               {

                                                                              pgsqlcommand.CommandType = CommandType.StoredProcedure;

 

                                                                              using (NpgsqlDataAdapter Adpt = new NpgsqlDataAdapter(pgsqlcommand))

                                                                              {

                                                                                              Adpt.Fill(dtRecord);

                                                                              }

                                                                              tran.Commit();

                                                               }

                                               }

                               }

                }

                catch (NpgsqlException ex)

                {

                               throw ex;

                }

                catch (Exception ex)

                {

                               throw ex;

                }

                return dtRecord;

}

 

 

 

 

 

Bunu biliyoruz, diğer databases.Since ile arabirim ise bulduğumuz gibi preety kadar aynı kodu, bizim fonksiyon biz DataSet.We gelen refcursor işlevi


tarafından döndürülen imleçler önlemek için işlem kullanıyorsanız kullanabilirsiniz Biz başka DataTable kullanıyorsanız sadece bir kayıt kümesi


döndürürimplicity işlem sonrasında kapanış NpgsqlCommand sınıfının CommandText finished.In, biz işlev adı belirterek edilir. Sonraki biz Ekle fonksiyonu (fnInsertRecord) çağırmak için bir yol göreceksiniz

public void InsertRecord(string OyuncuAdi, int Yas, string Uyelikleri, int Para)

{

 

                try

                {

                               using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))

                               {

                                               // Open the PgSQL Connection.                

                                               pgsqlConnection.Open();

 

                                               string insertCommand = "fnInsertRecord";

 

                                               using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(insertCommand, pgsqlConnection))

                                               {

                                                               using (NpgsqlTransaction tran = pgsqlConnection.BeginTransaction())

                                                               {

                                                                              pgsqlcommand.CommandType = CommandType.StoredProcedure;

 

                                                                              pgsqlcommand.Parameters.Add(new NpgsqlParameter("OyuncuAdi", NpgsqlDbType.Varchar));

                                                                              pgsqlcommand.Parameters.Add(new NpgsqlParameter("Yas", NpgsqlDbType.Integer));

                                                                              pgsqlcommand.Parameters.Add(new NpgsqlParameter("Uyelikleri", NpgsqlDbType.Varchar));

                                                                              pgsqlcommand.Parameters.Add(new NpgsqlParameter("Para", NpgsqlDbType.Integer));

 

                                                                              pgsqlcommand.Parameters[0].Value = OyuncuAdi;

                                                                              pgsqlcommand.Parameters[1].Value = Yas;

                                                                              pgsqlcommand.Parameters[2].Value = Uyelikleri;

                                                                              pgsqlcommand.Parameters[3].Value = Para;

 

                                                                              pgsqlcommand.ExecuteNonQuery();

                                                                             

                                                                              tran.Commit();

                                                               }

                                               }                  

                               }

                }

                catch (NpgsqlException ex)

                {

                               throw ex;

                }

                catch (Exception ex)

                {

                               throw ex;

                }

}

Bu, bir önceki gibi benzer bir kavram aşağıdaki Diğer DML işlevleri aynı desen izler. Çıkışı olacaktır altında olarak

 

 

Kapalı Hesap (153535)
22-07-2012, 01:44   |  #2  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Yazılanlardan hiçbir şey anlamadım.Sen anladın mı :))

Kapalı Hesap (239905) bu faydalı yanıtı için aşağıdaki 1 kişiden teşekkür aldı... [ Göster ]
ediptufekciler
26-07-2012, 11:57   |  #3  
ediptufekciler avatarı
OP Yeni Üye
Teşekkür Sayısı: 6
30 mesaj
Kayıt Tarihi:Kayıt: Tem 2012

:) Yazılar Acıkyacı ,değil Sadece Kod kısmı Yeter Acıklma da İyi Değilimdir .. bu arada .. )