Forum
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...
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
Ö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...
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.
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.
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?
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ı?
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;
Rica ederim Samet bey elimden ne geldiyse