Uzun zamandir C# ile MsSql veritabanindaki bilgileri nasil alabiliriz ve veritabanina nasil kayit atariz gibi sorular geliyor. Bu islemleri basitçe bir örnekle anlatmak istedim.
Ilk olarak veritabani baglantisini olusturmamiz gerekiyor, bunun için iki temel bilesene ihtiyacimiz var. Birincisi connection string olarak adlandirdigimiz veritabanini tanimlayan bir metin. Bu metin içine Mssql serverin adresi(eger varsa instance name ile beraber), veritabaninin adi, kullanici bilgileri gibi veritabanina baglanmamiz için gerekli olan bilgileri yazariz. Daha sonra bir Sql connection olusturarak baglantiyi yapariz. Bu islemlerin örnegimizde bulabilirsiniz.
Ilk olarak veritabani islemlerimizi yapacak bir sinif olusturalim. Bu sinif connection stringimizi app.config dosyasindan alsin ve baglantiyi açsin. Ayrica select insert gibi islemleri yapabilmek için bu sinifa fonksiyonlar tanimlayalim.
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Configuration; using System.Data; namespace MsSqlIslemleri { public class Veritabani { SqlConnection connection = null; public Veritabani() { string conString = ConfigurationSettings.AppSettings["conString"]; connection = new SqlConnection(conString); connection.Open(); } public DataTable SelectSorgusuCalistir(string sSorgu) { if (connection.State == ConnectionState.Open) { SqlDataAdapter da = new SqlDataAdapter(sSorgu, connection); da.SelectCommand.ExecuteNonQuery(); DataTable dt = new DataTable(); da.Fill(dt); return dt; } else return null; } public int InsertveUpdateSorgusuCalistir(string sorgu) { if (connection.State == ConnectionState.Open) { SqlCommand com = new SqlCommand(sorgu); com.CommandType = CommandType.Text; com.Connection = connection; int rowcount = com.ExecuteNonQuery(); return rowcount; } else return 0; } } }
Veritabani baglantisi için kullanacagimiz sinifimiz hazir olduguna göre bir Windows form projesi açalim ve hazirladigimiz sinifi kullanarak veritabanindan select ve insert islemlerini yapalim.
Yukaridaki gibi bir form tasarlayalim. Forma ekledigimiz butonlarin altina asagidaki kodlari yazdiktan sonra kullanilmaya hazir demektir. Yukaridaki resim select butonuna bastigimiz zaman olusan ekranin görüntüsüdür.
private void SelectSorgusuButton_Click(object sender, EventArgs e) { Veritabani db = new Veritabani(); DataTable dt = db.SelectSorgusuCalistir(@" select * from Siparis order by SiparisID"); dataGridView1.DataSource = dt; dataGridView1.DataMember = dt.TableName; } Random r = new Random(100); private void insertsorgusucalistirbutton_Click(object sender, EventArgs e) { Veritabani db = new Veritabani(); int count = db.InsertveUpdateSorgusuCalistir(@" INSERT INTO [Siparis] ([MusteriAdSoyad],[UrunAdi],[Tutar],[Donem]) VALUES ('RastgeleMusteri','UrunAdi',1250,20100405)"); MessageBox.Show(count.ToString() + "adet kayit veritabanina atildi"); }
Yukaridaki kodlarda gördügünüz gibi bizim _Denemeler diye bir veritabanimiz ve bu veritabaninda Siparisler tablomuz var. Sizde kodlari kendi veritabaniniza göre degistirmelisiniz.
Hatirlarsaniz veritanina ulasmak için olusturdugumuz sinif app.config dosyasindan connection stringi aliyordu. Sizde projenize asagidaki gibi bir app.config dosyasi olusturmalisiniz.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="conString" value="Data Source=.; Initial Catalog=_Denemeler;Integrated Security=True" /> </appSettings> </configuration>
Örnek projemizi asagidaki linkten indirerek kendi veritabaniniza baglayabilir ve deneyebilirsiniz. Umarim basit veritabani islemleri yapmak isteyen ve bu ise yeni baslayan arkadaslara yardimci olabilmisizdir.
Büyük ve orta ölçekli projelerde artik bu tür yapilar kullanmiyoruz. Bunlarin yerine veritabani islemlerimizi otomatik yapan veritabani ile birebir map olmus sinif yapilari kullaniyoruz. Bu siniflari otomatik olarak olusturan programlar ile üretiyoruz. Veritabanimizdaki her bir tabloyu sanki bir nesne gibi kullanarak islemleri çok hizli gerçeklestirebiliyoruz. Uygun bir zamanda bu tür basit bir örnek vermeye çalisacagim.
https://hot.com/dl/224261275/b179475/farklprojem.rar. – https://hotfile.com/dl/ 224261275/b179475/farklprojem. rar.html bu adrestesten c# veritabany orne?i mevcuttur
gönder 1-2 tane bakalym. birde neden bu kadar buyuk fontla yazdyn postu ?
merhaba örnek sitelerim var sizinle payla?mak istiyorummm
merhaba
merhaba
http://www.connectionstrings.com/access-2007
adresynden bence ystedygyn typde connectyon tanymy bulablyrsyn
Bu kodun App.Config bölümündeki ba?lantysyny Acces veritabany içinde yazabilir misiniz? Çok u?ra?tym yapamadym. Te?ekkür ederim.
arkadaslar meraba,
ben c# ile yazacgim kodda verit6abanindan bilgi çeken,yeni bir kayit eklendigimnde ekleyen,güncelleyen,silen bir uygulama yapiyorum da,burada baglanti yapmada sorun yasiyorum bide ilk defa böyle bi proje yapcam nasil yapcagim konusun da yardimci olur musunuz?
simdiden tesekkürler…
Tekrar tesekkürler.
Peki tüm bu islemleri setup olustururken otomatik olarak gerçektestirmek nasil mümkün ? Kullanici hiç ugrasmasin.
Merhaba Eyüp
Veritabani olmadan malesef çalistiramazsin. Örnekteki baglantiyi deneme veritabanina degil kendi makinanda bulunan bir veritabanina yönledirerek islemleri yapabilirsin. Keske makaleyi yazarklen veritabaninida koysaymisiz. eski bir makale oldugu için veritabanini bulmam çok zor. Makalenin amaci aslinda veritbanai islemlerini nasil yapacaginizi göstermek bu yüzden örnek kodlari kendi veritabaniniza uyarlayip çalistirmaniz gerekiyor malesef.
iyi çalismalar
Öncelikle tesekkürler güzel bir makale olmus. Bir sorum olacak yardimci olursaniz memnun olurum.
Örnek Proje Kodlari ‘ni indirdim. Direk bin/debug içindeki MsSqlIslemleri.exe’yi çalistirdim, program açildi fakat butonlara tikladigimda "_Denemeler" veritabani bulunamadi seklinde hata verdi dogal olarak çünkü bende öyle bir veritabani yok.
Bir kaç gündür bu soruya cevap ariyorum. Illa ki ben elle _Denemeler veritabanini olusturmali miyim ? Otomatik olarak yapilamaz mi bu ?
Yani kullanici MsSqlIslemleri.exe’ye tiklayacak program sorunsuz açilacak ve çalisacak, istedigim bu. Hiç veritabani ki
Veri tabani okuyorm da biz farkli yollarda gördük baglamayi nede olsa programlamada 1 sorunu 1den fazla yolla da çözebilirsin Neyse bi soru sorcam tablolarda bi sorun falan yok ;
OleDbCommand komut2 = new OleDbCommand("select saat from Dersprg where sinif=’"+label17.Text+"’ and gün=’"+gun+"’ ",baglanti);
arkadaslar sqlde hazirlanan tablolari visual c # a baglayip burada önce listeleme ardindan textboxa girilen sayiyi silme,kaydetme,güncelleme kodlarini nasil yapabilirim
yardimci olursaniz çok mutlu olurum 🙂
arkadaslar sqlde hazirlanan tablolari visual c # a baglayip burada önce listeleme ardindan textboxa girilen sayiyi silme,kaydetme,güncelleme kodlarini nasil yapabilirim
yardimci olursaniz çok mutlu olurum 🙂
Iyi gunler,
Makale icin cok tesekkurler, cok yardimci oldu. Benim bir sorum var. Projenin altinda Resources olusturdum ve oraya birkac resim ekledim. Obur yandan, olusturdugum veritabanindaki bir tabloda, bu resources dosyasindaki resimlerin isimlerini kaydettim. fakat tablodan sorguladigim resim ismini (string olarak) nasil PictureBox.Image= Properties.Resources.image1 yerine
PictureBox.Image= Properties.Resources.[sorgunun sonucu elde ettigim string] olarak kullanacagimi bilmiyorum.
Tabloya, resimlerin ismi yerine, path’lerini kaydetmeyi denedim (Resources\flower.jpg" gibi. sonrasindada PictureBox.ImageLocation=sorgu sonucu elde ettigim string , yaptim, ama buda olmadi.
Umarim sorumu anlatabilmisimdir. Yardimci olursaniz sevinirim.
makalede verdigimiz ornekleri kullandinizmi ? insert sorgusu çalistir fonksiyonunu
create table (ID int, Ad varchar(10)) soegusu ile çagirirsaniz tabloyu olusturacaktir. aldiginz hata mesajinida gönderin.
Visual c# kullanyorm . ßutuona tikladigimda Tablonun Olsturulmasiini istyorum .
Formapplication’a yaziorm hata veriyo yanlis oldugunu bilyorum . Nasil Yapcagim konusunda bilgi verirsenz sevinirim
Tesekkrler.
Bu tür konularda makale yazmak isterseniz yazilarinizi bekleriz.
ewet veri tabani veri çekme gibi güzel bi örnek olmus arkadas saol. yardim isteyen programci arkilere yardim verebilirim isterseniz.
sagol kardesim isime gercekten yaradi
Anlamadiginiz yer neresi? Sorunu belirtirseniz yardimci olabilirim belki. Burada anlatilan sey aslinda çok basittir. Bugün bitirdigim projemin bir bolumunde bu kodlari kullandim; çok isime yaradi.
ya bn de veritabani programcigi okuyom hiç bise anlamiyorumm :(((……
sözde bilgisayarciyim hiç bir sey anlamiyom ya…
Gerçekten çok basarili bir kodlama olmus ama bi halt anlamadim..
arkadaslar daha kolay ve daha hizli veri tabani baglantisi yapilir kodlar
önce ise göre veri tabani olusturulur sonra bu veri tabani sizin c#uygulamaniz kaydettiginiz yerdeki bin in içindeki debung a atin.daha sonra alttaki islemleri yapniz.
using System.Data.OleDb;
initilazing in altina degisken tanimlanir.
OleDbConnection odc;
OleDbDataAdapter adp;
DataSet dt;
OleDbCommandBuilder cb;
form 1 load a in altiina
string baglanti = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath.ToString() + "\\Kutuk.mdb";// bu alainin sonuna kutuk yazan yere kendi veri tabaninizina adin yazin.
Tesekkürler.
Eline saglik. Çok güzel açiklamissin.
"Örnek Hatasi" uyarisi aliyorum acaba problem nedir?
Çok tskler. Baslangiç için çok çok faydali olmus. Büyük ve orta ölçekli projeler için örneklerinizi bekliyorum.
Güzel olmus Sabri abi ellerine saglik.
Ilk adim için altin kadar degerli bir döküman olmus elinize saglik.
Kardes eline, emegine saglik. Güzel anlatmissin.