c# ile cari hesap programı yapacağım ödevim var fakat sql bağlantısını yapamıyorum yani datagridview ile çekebiliyorum verileri sqlden fakat gridcontrol ile yapıp çekmeye çalıştığımda mesela sql de 5 satırlık veri varsa grid controlde 5 satırlık yer açılıyor derleme yapınca fakat içi boş denemediğim yol kalmadı yardım ederseniz çok sevinirim şimdiden çok teşekkürler.
c# sql Bağlantisi
class DBCONNECTION
{
public SqlConnection baglanti()
{
SqlConnection baglan = new SqlConnection(@"Data Source=YBD\YBDSQL;Initial Catalog=OTOMASYON;Integrated Security=True");
baglan.Open();
return baglan;
}
}
ilk kısım bağlantı class kısmı onu ayrı yazdım 2. attığım kısım hesaplistesi dediğim yer sqlden verileri çekip gridcontrolde görmem gerekiyor fakat olmuyor.
DBCONNECTION bgl = new DBCONNECTION();
public CariHesapListesi()
{
InitializeComponent();
}
void yukle()
{
try
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select * from OTOMASYON_carikart", bgl.baglanti());
da.Fill(dt);
gridControl1.DataSource = dt;
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString(),"Sql HATA");
}
}
class DBCONNECTIONVeritabanı bağlantılarında düzgün birşey göremiyorum bağlan nesnesini döndürmek için ayrı bir sınıf oluşturman çok yersiz bir kere sınıf static olsa bir nebze diyeceğim.Normalde bellekte sadece bağlantı nesnesi tutulacak iken , sınıfı belleğe yükleyip sınıf içindeki bağlantı nesnesini de belleğe yüklüyor.
{
public SqlConnection baglanti()
{
SqlConnection baglan = new SqlConnection(@"Data Source=YBD\YBDSQL;Initial Catalog=OTOMASYON;Integrated Security=True");
baglan.Open();
return baglan;
}
}
ilk kısım bağlantı class kısmı onu ayrı yazdım 2. attığım kısım hesaplistesi dediğim yer sqlden verileri çekip gridcontrolde görmem gerekiyor fakat olmuyor.DBCONNECTION bgl = new DBCONNECTION();
public CariHesapListesi()
{
InitializeComponent();
}void yukle()
{
try
{DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select * from OTOMASYON_carikart", bgl.baglanti());
da.Fill(dt);
gridControl1.DataSource = dt;
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString(),"Sql HATA");
}
}WPF kullansan daha rahat yapabilirsin istediğini aslında neyse çok uzatmadan olamsı gerektiği gibi bir kod yazalım ;
List<Musteri> listem =newList<Musteri>();using(SQLiteConnection con =newSQLiteConnection("Data Source=*VeriTabanı*.s3db;Version=3;"))using(SQLiteCommand cmd =newSQLiteCommand("SELECT * FROM Musteriler ", con)){
con.Open();
SQLiteDataReader reader = cmd.ExecuteReader();while(reader.Read()){Musteri m =newMusteri();
m.ad =(string)reader[0];
m.tel =(string)reader[1];
m.adres =(string)reader[2];
m.tarih =Convert.ToDateTime(reader[3]);
listem.Add(m);}
con.Close();}Birde wpf örneği olsun diye bir proje paylaşayım.
http://s7.dosya.tc/server7/g2qq05/Barkod.rar.html
Yukarıdaki linkte wpf+sqlite+datagrid ilişkisine göz atabilirsin.NOT:Eğer datagridin autogeneratecolumn özelliği false ise tablonun sütun adlarının datagridin propertyname i ile örtüşmesi gerek yoksa verileri göstermez.
Kafam çok karıştı özelden yardım edebilir misiniz bir haftadır uğraşıyorum sql ve c# ile kod yazımınız sanırım biraz ağır geldi bana iyi bilmediğim için
Ben sql tabloma veriler girdim ve dev express grid control attım formuma sql bağlantımı yukarıda attığım dbconnection classında sağlıyorum açtığım formunda view code kısmında da dbconnection nesnesini yaratıp bağlantıyı oraya çekiyorum
Örn: DBCONNECTION bgl =new DBCONNECTION ();
sonra sql e girdim verileri gridcontrolde görmek istiyorum fakat beceremiyorum yani veri çekmekte sorunum var kod ile çekemiyorum fakat linq ile bağlayıp sql deki tabloyu direkt çekebiliyorum o güzel olmuyor sqlclient ile kod yazarak verileri gridcontrole çekmek istiyorum ve bir soru sormak istiyorum programı derleyince ben gridcontrol columnlarına yazı yazabiliyorum acaba yazı yazabildiğim için mi dışardan erişim olduğu yani direkt tablo görevi görmediği için mi veriler gelmiyor ?
Ne yapmak istediğini anlıyorum basitçe özetlersem ;
Gridde veritabanını göstermek istiyorsun.
Veritabanına bağlanırken singleton pattern'ı kullanmaya çalışmışsın.
İşin aslına gelirsek normalde biz bu uygulamarlar da datagridle ilgilenmeyiz biz arkada collections ile çalışırız yani şöyle , wpf de basit bir observable collection oluştururuz bunu datagridin itemsource özelliğine atarız.Sonra oluştruduğumuz o listede biz değişiklik yaptığımızda değişiklikler dinamik olarak datagride yansır.Winform da ise yine aynını yaparız verileri bir listeye çekeriz listeyi bindingsource'a atarız binding source u ise datagridin datasource özelliğine atarız.
Tabi liste derken liste ne türden veri saklayacak onu söylemedik veritabanında ki verilere karşılık gelecek bir sınıf oluştururuz liste bu sınıf türünden değişkenleri tutacaktır.
Gelelim senin problemine , eğer datagridin property name özelliğini her column için veritabanından çektiğin verilerin sütun adları ile uyuşturmamışsan ve datagridin autogeneratecolumn özelliğini false yapmışsan veri gelmeyecektir.
NOT:Anlat derken ne yapacağını anlatmanı kasıt ettim.
Benim sql veri tabanımdaki veri başlıkları ile gridcontrol başlıklarım yazım şekilleri aynı değil o yüzden gelmediğini kastediyorsunuz sanırım ve datagridin bu özelliğini kapatmam gerektiğini söylüyorsunuz bunu nerden yapabilirim veya gridcontrol run designer de bu özelliği kapatacak bi bölüm varmıdır ?
ne yapacağıma gelirsek bi cari program yapacağım ana menü olacak (Cari kart,hesap hareketleri,hesap bakiye listesi,hesap extresi)
mesela ben carikart a tıkladığım zaman cariliste diye bir formum var o gelecek ve ben simple button ile ayarladığım carikod cariad adres telefon vergi dairesi vergi no tarzı buttonlarla text editleri göreceğim ve ekle sil güncelle diye butonlarım olacak ordan da ekleme silme güncelleme yapacağım.
ve sql veritabanından çektiğim verileri orda göreceğim veya ben veri girip ekleye basınca gridcontrolde o girdiğim veriyi görmek istiyorum vs.
http://s7.dosya.tc/server8/bwt9xy/Datagridbind.rar.html
Şu projeyi indirip incelermisin yorum satırlarında açıkladım ne yapman gerektiğini.