En iyi yanıtlayıcılar
SQL den koşullu sorgudan dönen bilgileri değişkenlere aktarma.

Soru
-
Merhabalar Aşağıdaki gibi bir sorgudan dönen bilgileri bir diziye veya farklı yöntemler ile değişkenlere aktarmak istiyorum ancak başaramadım. Yardımcı olabilirmisiniz.
SqlConnection con = new SqlConnection(dbtools.connstr);
SqlCommand com = new SqlCommand();
con.Open();
com.Connection = con;
com.CommandText = ("select sum(miktar),fistipi from fisdet where malkodu ='" + textEdit1.Text+ "'and donem = '" + dateEdit2.Text + "' GROUP BY fistipi ");
SqlDataReader toplam = com.ExecuteReader();SQL de sorgundan aşağıdaki gibi bilgi dönüyor
No Column Name Tip
50 D
15 I
15 M
17 T
- Düzenleyen Fikret Devrim 14 Eylül 2020 Pazartesi 22:33
Yanıtlar
-
Iyi ki basaramayip kodunuzu paylasmissiniz. ASLA ve ASLA bu sekilde "select ...." + textEdit1.Text + "...." seklinde SQL cumlesi yazmayiniz, parametre kullaniniz.
string sql = @"select sum(miktar) as miktar, fistipi from fisdet where malkodu = @malkod and donem = @donem group by fistipi"; DataTable tbl = new DataTable(); using (SqlConnection con = new SqlConnection(dbtools.connstr)) using (SqlCommand com = new SqlCommand(sql, con)) { com.Parameters.Add("@malkod", SqlDbType.Varchar).Value = textEdit1.Text; com.Parameters.Add("@donem", SqlDbType.Varchar).Value = dateEdit2.Text; con.Open(); tbl.Load(com.ExecuteReader()); con.Close(); } // dizi neden gerekli bilemiyorum ama madem oyle var dizi = tbl.AsEnumerable() .Select(x => new { Miktar = x.Field<int>("Miktar"), FisTipi = x.Field<string>("FisTipi") }).ToArray();
Not: dateEdit2 sanki tarih ile ilgili bir sey ama sizin kodunuzda string oldugu icin ben de oyle kullandim. Umarim Date\Datetime gibi bir degeri string gibi kullanmaya calismiyorsunuzdur.
Blog
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.
- Düzenleyen CetinBasozEditor 14 Eylül 2020 Pazartesi 22:41
- Yanıt Olarak İşaretleyen Fikret Devrim 15 Eylül 2020 Salı 22:35
Tüm Yanıtlar
-
Iyi ki basaramayip kodunuzu paylasmissiniz. ASLA ve ASLA bu sekilde "select ...." + textEdit1.Text + "...." seklinde SQL cumlesi yazmayiniz, parametre kullaniniz.
string sql = @"select sum(miktar) as miktar, fistipi from fisdet where malkodu = @malkod and donem = @donem group by fistipi"; DataTable tbl = new DataTable(); using (SqlConnection con = new SqlConnection(dbtools.connstr)) using (SqlCommand com = new SqlCommand(sql, con)) { com.Parameters.Add("@malkod", SqlDbType.Varchar).Value = textEdit1.Text; com.Parameters.Add("@donem", SqlDbType.Varchar).Value = dateEdit2.Text; con.Open(); tbl.Load(com.ExecuteReader()); con.Close(); } // dizi neden gerekli bilemiyorum ama madem oyle var dizi = tbl.AsEnumerable() .Select(x => new { Miktar = x.Field<int>("Miktar"), FisTipi = x.Field<string>("FisTipi") }).ToArray();
Not: dateEdit2 sanki tarih ile ilgili bir sey ama sizin kodunuzda string oldugu icin ben de oyle kullandim. Umarim Date\Datetime gibi bir degeri string gibi kullanmaya calismiyorsunuzdur.
Blog
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.
- Düzenleyen CetinBasozEditor 14 Eylül 2020 Pazartesi 22:41
- Yanıt Olarak İşaretleyen Fikret Devrim 15 Eylül 2020 Salı 22:35
-
Merhabalar,
Öncelikle yardımlarınız için teşekkür ederim. Parametre tavsiyeniz ve uyarınız için teşekkür ederim. İncelediğim formlarda bu şekilde parametre kullanımları dikkatimi çekti. Elimde olan kod örnekleri bu şekilde idi. DateEdit nesnesini string olarak kullanmıyorum (Normalde) ancak yapmaya çalıştığım uygulamada belli tarihleri milat olarak alıp milatlar arasında yapılan her işlemin hangi döneminde yapıldığına dair basit bir mantık uyguladım. BU yüzden dateedit nesnesindeki tarihi ay ve yıl olarak formatlayıp veri tabanına string olarak kaydettim. Sorguda bu nedenden dolayı dateedit2.text yazdım.
Dizi neden gerekli olduğu kısmında ise; kaydettiğim verileri milatlar arasında tiplerine göre gruplayıp, aynı tipteki değerleri toplayarak diziye aktarmayı daha sonra ise diziden farklı değişkenlere alıp dört işleme tabi tutmayı düşündüm. Çevremde etkileşime geçebileceğim yazılımcı arkadaşım yok. Bu yüzden kurduğum mantık ve tasarladığım kodlar hatalı, hantal vs olabilir kusurumu mazur görünüz.
Gönderdiğiniz kodu deneyip dönüş yapacağım şimdiden teşekkürler.
-
Merhabalar Hocam,
Düzenlediğiniz kod ve uyarılarınız sayesinde boşu boşuna uğraştığımı anladım. Tabi tam olması gerektiği gibi doğru bir sonuç çıkarttım mı bilmiyorum ama istediğim şeyi daha kolay bir yoldan yapmama vesile oldunuz. Dizi neden gerekli sorusunu neden sorduğunuzu daha iyi anladım sanırım :) verdiğiniz kodlarda atama hatası aldım ama zaten atama yapamama da gerek yok muş :)
Çok Teşekkürler.
Bilgi Paylaşıldıkça Çoğalır
-
Atama hatasi almaman gerekirdi ama data tiplerini ben bilemedigimden tahmin yuruttum (Miktar int, fistipi string diye).
Blog
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.