Forum

C# da parametre kul...
 
Bildirimler
Hepsini Temizle

C# da parametre kullanarak Sql Procedure oluşturmak.

9 Yazılar
2 Üyeler
0 Reactions
1,113 Görüntüleme
(@SametSayman)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Herkese Merhaba.

Direk sorunumu anlatayım.

Sql de parametre yardımıyla bir Arama Procedure'ü oluşturmak istiyorum. 

Örnek olarak: 

------------------------------------------------------------------------------------------------------------------------------

  •  Bu kısımda Sql Procedure'ünü oluşturdum.

------------------------------------------------------------------------------------------------------------------------------ 

ALTER PROCEDURE Gonullu_Arama_Adi @Adi varchar(50)                    
    /*                                                                                                        
    (
    @parameter1 int = 5,
    @parameter2 datatype OUTPUT
    )                                                                                                          
    */
AS select Adi from Gonullu where Adi like @Adi+ '%'
    /* SET NOCOUNT ON */
    RETURN

------------------------------------------------------------------------------------------------------------------------------ 

  •   Burada kod karışıklığını önlemek için yeni bir public void hazırladım. (İsmini hatırlamadığım için "Public void" dedim.)

------------------------------------------------------------------------------------------------------------------------------ 

public void Gonullu_Arama_Adi()
        {
            SqlConnection Engelsiz_conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Engelsiz Yaşam\\Engelsiz Yaşam\\EngelsizYaşam.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
            Engelsiz_conn.Open();
            SqlCommand calistir = new SqlCommand();
            calistir.Connection = Engelsiz_conn;
            calistir.CommandText = "Gonullu_Arama_Adi";
            calistir.CommandType = CommandType.StoredProcedure;                                   
            calistir.Parameters.AddWithValue("@Adi", Gnull_Arama_txtbx.Text);                        
            calistir.ExecuteNonQuery();
            Engelsiz_conn.Close();
        }

---------------------------------------------------------------------------------------------------------------------------------------------------

  • Ve hazırladığım Public void'i Buton içersinde kullandım. Ancak düşüncem şu ki Arama sorgusu işleme giriyor fakat aramayı yaptıktan sonra DataGridview'e
    herhangi bir değer döndürmüyor. Sonraki yaptırdığım Listelemede ise tüm tabloyu bana
    listeleyip karşıma getiriyor.

---------------------------------------------------------------------------------------------------------------------------------------------------

 private void Gnull_Ara_bton_Click(object sender, EventArgs e)
        {
            Gonullu_Arama_Adi();                                
            Listele_Gonullu();                                    
        }                                                                    

----------------------------------------------------------------------------------------------------------------------------------------------------

Bu tarz uygulamalar denedim ama bi türlü başarılı olamadım.

Sonuç olarak bu anlattığım konuyla ilgili bilgisi olan arkadaşlar yardımcı olabilirlerse çok mutlu olurum.

Şimdiden herkese TEŞEKKÜR EDERİM...

 
Gönderildi : 24/06/2012 19:11

(@kenanilgun)
Gönderiler: 544
Üye
 

Sanırım siz burada gelen query sonuc problemi yaşıyorsunuz. İlk öncelikle sorguunuzda iki farklı cevap olup olmadığını kontrol edermisiniz. Veya komutunuzu aşağıdaki gibi tekrar denermisiniz?

 

            SqlCommand Engelsiz_conn = new SqlCommand()

            {

                Connection = sql.GetConn(),

                CommandType = CommandType.Text,

                CommandText = "EXEC Gonullu_Arama_Adi @adi"

            };

            Engelsiz_conn.Parameters.Clear();

            Engelsiz_conn.Parameters.Add("@adi", SqlDbType.VarChar).Value = "@adi parametresi";

            SqlDataAdapter Engelsiz_SDA = new SqlDataAdapter(Engelsiz_conn);

            DataTable Engelsiz_DT = new DataTable();

            Engelsiz_SDA.Fill(Engelsiz_DT); 

 

https://docs.google.com/document/d/1AWcElnvORL2Lu3KYv_b-7Cf6LtvD10m2NcPfPbwKGwM/edit

 
Gönderildi : 25/06/2012 12:45

(@SametSayman)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Öncelikle ilginizden dolayı Teşekkür ederim.

Sorgumda nasıl iki farklı cevap olur onu anlamadım biraz daha açıklayıcı anlatırmısınız. İkinci olarak altta verdiğiniz kod bloğunda Connection=sql.GetConn'da sql herhangi bir yerde tanımlanmadığı için hata verdi onu nasıl çözebilirim.

Saygılarımla...

 
Gönderildi : 25/06/2012 14:01

(@kenanilgun)
Gönderiler: 544
Üye
 

sql.Getconn() benim yaptığım sql connect i oluşturup cevap veren bir classtır. Bu kısma sizin sql connection objenizi yazabilirsiniz. Bir ikincisi procedurunuzu execute yapmayı deneyiniz linkte verdiğim gibi return sonucu ile select sorgunuz aynı anda dönüyorsa linkin üzerindeki benim yaptığım gibi bir çalışma yaparak deneyebilirsiniz.

 
Gönderildi : 25/06/2012 14:14

(@SametSayman)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Bu işlerde biraz yeni olduğum için tam anlamıyorum kusuruma bakmayın. Bu sql connection'u hala çözemedim (açıkcası bendeki sql connection nedir bulamadım.) ama dediğiniz gibi kendi procedurumu Execute yapınca bana tablodaki değerleri istediğim gibi getirdi herhangi bir sıkıntı olmadı yani ancak forma uygun halini hala düzenleyemedim.

 
Gönderildi : 25/06/2012 14:44

(@kenanilgun)
Gönderiler: 544
Üye
 

      SqlConnection Engelsiz_conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Engelsiz Yaşam\\Engelsiz Yaşam\\EngelsizYaşam.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

  SqlCommand Engelsiz_conn = new SqlCommand()

            {

                Connection = 
Engelsiz_conn;

                CommandType = CommandType.Text,

                CommandText = "EXEC Gonullu_Arama_Adi @adi"

            };

            Engelsiz_conn.Parameters.Clear();

            Engelsiz_conn.Parameters.Add("@adi", SqlDbType.VarChar).Value = "@adi parametresi";

            SqlDataAdapter Engelsiz_SDA = new SqlDataAdapter(Engelsiz_conn);

            DataTable Engelsiz_DT = new DataTable();

            Engelsiz_SDA.Fill(Engelsiz_DT); 

 

Bu şekilde deneyebilir misiniz? 

 
Gönderildi : 25/06/2012 17:41

(@SametSayman)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Aynen verdiğiniz şekilde denedim ancak

Connection = 
Engelsiz_conn;

CommandType = CommandType.Text,

CommandText = "EXEC Gonullu_Arama_Adi @adi"

Bu 3 satırın sonunda noktalama hatası alıyorum. Noktalamaları kendim sürekli değiştirdim ama hatadan başka herhangi bir sonuç alamadım.

Bunu nasıl halledebiliriz bir fikriniz varmı?

 
Gönderildi : 25/06/2012 20:14

(@SametSayman)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Kenan Bey size her için teşekkür ederim.

Sorunumu çözmüş bulunmaktayım ve kodları burada paylaşacağım belki benim gibi birisine daha yarayabilir.

------------------------------------------------------------------------------------------------------------------

  •  Kodları düzenledikten sonra dilediğiniz gibi kullanın.

------------------------------------------------------------------------------------------------------------------

SqlConnection Engelsiz_conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Engelsiz Yaşam\\Engelsiz Yaşam\\EngelsizYaşam.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
             Engelsiz_conn.Open();
             DataSet ds = new DataSet();
             DataTable Dt = new DataTable();
             SqlDataAdapter adaptor = new SqlDataAdapter("Select * From Gonullu where Adi like '" + Gnull_Arama_txtbx.Text + "%'", Engelsiz_conn);
             adaptor.Fill(Dt);
             Gnull_Datagrid.DataSource = Dt; 

 
Gönderildi : 25/06/2012 22:55

(@kenanilgun)
Gönderiler: 544
Üye
 

Rica ederim Samet bey elimden ne geldiyse

 
Gönderildi : 26/06/2012 00:33

Paylaş: