C# ile Basit Veritabani Islemleri Nasil Yapilir

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.

c# veritabani islemleri
.

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.

Örnek Proje Kodlari

.

31 thoughts on “C# ile Basit Veritabani Islemleri Nasil Yapilir

  1. merhaba

    C # ta yeniyim ve acil bir konuda yonlendirilmeye ihtiyacim var. windows.form.aplication ve WPF.aplicationda sorunsun caly?an iki programi ayny anda cali?tyryp WPF.aplicationdan aldygym bilgiyi windows.form.aplication kullanman lazim boyle bir seyi yapabilmem mümkün. veya  windows.form.aplication bi kod yazarak  WPF.aplicationda yazdygym programy çaly?tyryp bunu database olusrup ona kaydedip ordan alman mumkun fikir verirseniz cok memnun olurum.
  2. 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.

  3. 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…

  4. Tekrar tesekkürler.

    Peki tüm bu islemleri setup olustururken otomatik olarak gerçektestirmek nasil mümkün ? Kullanici hiç ugrasmasin. 

  5. 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

  6.  Ö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

  7.  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);

               okuyucu = komut2.ExecuteReader();
               while (okuyucu.Read())
               {
                        label5.Text = okuyucu[0].ToString();
               }
     
     label5 e aktarmasi lazim ama bi hata var sanirim tabloda komutlara uyan bi veri olmasina ragmen bulamiyo sinir bozucu bi durum 
  8. 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 🙂

  9. 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 🙂

  10.  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. 

  11. 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.

  12.  Visual c# kullanyorm . ßutuona tikladigimda Tablonun Olsturulmasiini istyorum .

    Formapplication’a yaziorm hata veriyo yanlis oldugunu bilyorum . Nasil Yapcagim konusunda bilgi verirsenz sevinirim

  13.  ewet veri tabani veri çekme gibi güzel bi örnek olmus arkadas saol. yardim isteyen programci arkilere yardim verebilirim isterseniz.

  14. 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. 

  15. 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.

  16. Çok tskler. Baslangiç için çok çok faydali olmus.  Büyük ve orta ölçekli projeler için örneklerinizi bekliyorum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir