C# Access Veritabanı Bağlantısı (Select , İnsert , Update , Delete ) Örnek Uygulama – Web Tasarım & Programlama
C# Programlama Windows Form Örnekleri

C# Access Veritabanı Bağlantısı (Select , İnsert , Update , Delete ) Örnek Uygulama

Bu yazımızda C# Access veri tabanı bağlantısını gösteren basit bir uygulama yapacağız. İlk olarak formumuzu aşağıdaki şekilde oluşturarak kaydedelim.

Formumuzda 5 adet textbox,1 adet datagridview, 3 adet buton ve 5 adet Label  bulunmaktadır.Datagrid sütunlarını aşağıdaki şekilde düzenlemek  isterseniz nasıl yapılacağı ile ilgili videoyu aşağıdaki link’e tıklayarak izleyebilirsiniz.

C# datagrid sütunları düzenleme videosu için tıklayın.

access_baglanti_form

TextBox ların Name özelliğini sırasıyla tbno, tbad, tbsoyad ve tbtel olarak değiştirelim.

 

Daha sonra “okul.accdb” isminde bir veritabanı dosyası oluşturarak projemizin “debug” klasörü içine atalım ve içine aşağıdaki şekilde “ogrenci” tablomuzu oluşturalım.

access_baglanti_veritabani

Aşağıda programımıza ait kodlar bulunmaktadır. Bu kodları inceleyecek olursak griddoldur metodu oluşturularak datagridviewin içeriğinin verilerle doldurulduğunu görüyoruz. Bunu metot içinde yapmamızın amacını programda bir kaç yerde kullanacağımız için aynı kodları tekrar yazmamak olarak açıklayabiliriz.

Form_Load olayına yani form yüklendiği anda verilerimizin datagridview’ de görüntülenmesini istediğimiz için griddoldur metodunu öncelikle buraya ekledik.

Buton1‘ e bastığımızda kayıt ekleme işlemini gerçekleştirdik. Kayıt ekleme işlemi gerçekleştirdikten sonra datagridin güncellenmesini sağlamak için tekrar griddoldur metodunu çağırdık.

Button3 te öğrenci numarasına göre diğer alanların güncellenmesi işlemini gerçekleştirdik.

Button2‘de ise name özelliğini tbnoolarak değiştirdiğimiz textbox’ a girilen öğrenci numarasına ait kaydın silinmesi işlemini gerçekleştirdik.

Datagridview‘ de tıkladığımız satırdaki verilerin textboxlara gelmesi için Datagridview Cell_Enter olayına gerekli kodları yazdık.

Son olarak arama yapmak için textbox5’i kullandık. Buraya yazdığımız öğrenci adına göre veri tabanında filtreleme yapmış olduk.

Arama işleminin Dataview RowFilter kullanılarak nasıl yapılacağı ile ilgili örneğe buradan ulaşabilirsiniz.

Uygulamaya ait örneği buradan indirebilirsiniz.

===== www.yazilimkodlama.com =====

Örnek 2: Bu örneğimizde de yine C# Access Veritabanı bağlantısı oluşturacağız. Fakat bu örneğimizde yukarıdaki örnekten farklı olarak parametre kullanımını da göreceğiz. Örneğimize geçelim.

Form tasarımı:

vt_0

Access Veritabanı dosyamız:

vt_1

vt_2

Bizim örneğimizde doyanın ismi dbSirket.accdb Tablo ismi ise Personel olarak belirlendi. Veri tabanımızı oluşturduktan sonra Projemizin ../bin/debug klasörü altına kopyalıyoruz.
Şimdi Formumuza dönebiliriz. Tasarım işini tamamen bitirmek için datagridview özelliklerinden SelectionMode özelliğini Tüm Satır seçili olacak şekilde ayarlayalım. (FullRowSelect)

vt_4

Kodlarımız:

C# veri tabanından datagridview’e veri çekme videosu için tıklayın.
C#  access ‘e kayıt ekleme videosu için tıklayın.
C# access bağlantısı arama yapma videosu için  tıklayın.
C# access veritabanı bağlantısı kayıt güncelleme (update) videosu için  tıklayın.
C# access veritabanından kayıt silme (delete) videosu için  tıklayın.
C# SQL SERVER BAĞLANTISI İÇİN TIKLAYIN.

C# dilinde yazılmış daha fazla örnek ve konular için C# Dersleri yazısını da incelemenizi tavsiye ederim. Ayrıca yazılmış diğer örnek ve uygulamalara sağ üstte bulunan site içinde ara ile göz atabilirisiniz.

Facebook Sayfamızı beğenerek daha fazla örneğe ulaşabilirsiniz.

226 Yorum

  • kaydı yaptıktan sonra kapatıp tekrar açınca kayıtlar kayboluyor sürekli kalmasını nasıl sağlayabilirim
    ?

  • Hocam merhaba.c# dilinde access veritabanı kullanarak yaptığım bir proje var.Sorun şu ki ben bu veritabanının güvenliğini nasıl sağlayacağım? bildiğiniz gibi kullanıcı bu veritabanına uygulama klasöründen tıklayarak içeriğini görebilir ve verilerde değişiklikler yapabilir. Ben bu veritabanını nasıl koruyacağım?

    • Merhaba. Guvenlik çok önemliyse sql veritabani kullanabilirsiniz. Ama mutlaka access olması gerekiyorsa bazi klasor ve dosya sifreleme programları mevcut. Bu sekilde bir önlem alabilirsiniz.

  • Merhaba, biz visual studio da checkedlistboxtan seçilen satır indexiyle aynı indexe sahip listboxtaki verinin seçilerek datagridviewe aktarılmasını istiyoruz. Fakat yapamadık, yardımcı olur musunuz?
    Teşekkürlerr, iyi çalışmalar.

  • Hocam Merhaba;
    Acces veritabanı kullanıyorum hocam şuanlık projemde ve Access VeriTabanına Uzaktan Bağlanma yapmak istiyorum bu mümkünmüdür sabit bir ip üstünden server bilgisayarım var ve bu yazdığım programı başka bir bilgisayara yüklediğimde serverdaki veritabanıma kayıt yapmasını istiyorum teşekkür ederim. Kısacası Access VeriTabanına Uzaktan Bağlanma mümkünmüdür.

  • Hocam Merhabalar ;
    Access VeriTabanına Uzaktan Bağlanmak istiyorum sabit bir ip adresi verip başka bir bilgisayardan yazmış olduğum programı yüklediğimde serverdaki acces veritabanına ordan kayıt girmesini istiyorum bu mümkünmüdür. Access VeriTabanına Uzaktan Bağlanma’ kısacası bu mümkünmüdür böyle bir örneğiniz varmıdır acaba çok teşekkür ediyorum.

  • İyi Günler Ben Size Nasıl Anlatsam bilemedim benim sorunum kullanıcı adı ve şifrem var bunu veri tabanında kullanmak istemiyorum ama arada kullanıcı adı ve şifre değiştirmem gerekiyor bunun için ne yapabiliriz

  • Merhaba projem içim bir kütüphane otomasyonu yapıyorum eklersen sorun olmuyor tarihler ama güncellemeye çalışırken sürekli hata alıyorum
    “”””””
    An unhandled exception of type ‘System.Data.OleDb.OleDbException’ occurred in System.Data.dll

    Additional information: Data type mismatch in criteria expression.
    “””””””

    Sorun için yardımcı olur musunuz?

    • SQL Server’da tabloda kayıt edilen tarih formatı ay/gun/yıl şeklindedir. Seninde bu formatta veriyi kaydetmen gerekir.

  • Merhaba
    Öncelikle elinize emeğinize sağlık. Çok faydalı bir site olmuş. Benim şöyle bir sorunum var. Access veritabanımda tahsilat diye bir tablo oluşturdum ve kayıt giriyorum. Yeni kayıt oluşturmada sorun yok ama düzeltme yada silme işlemi yapmayı denediğimde işlem tamamlandı mesajı alıyorum, herhangi bir hata vermiyor ama silme yada güncelleme işleminide yapmıyor. Kodlarım aşağıda.
    Projemde kayıt yapılan 3 form daha var onlarda bir sorun yaşamadım. son oluşturduğum formda bu sorunu yaşıyorum.

    private void button3_Click(object sender, EventArgs e)//SİLME ONAY BUTONU
    {

    {

    try

    {
    DialogResult cevap;
    cevap = MessageBox.Show(“Kayıt silinecek!!! Onaylayın”, “Uyarı”, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (cevap == DialogResult.Yes)
    {
    cmd5 = new OleDbCommand();
    con.Open();
    cmd5.Connection = con;
    cmd5.CommandText = “delete from tahsilat where no=” + dataGridView1.CurrentRow.Cells[0].Value.ToString() + “”;
    cmd5.ExecuteNonQuery();
    cmd5.Dispose();
    con.Close();
    griddoldur5();
    textBox2.Clear();
    textBox3.Clear();
    MessageBox.Show(” KAYIT SİLİNDİ!!!”);
    }
    }
    catch (Exception hata)
    {
    MessageBox.Show(hata.Message);
    }
    }

    }

    • tablonun içini boşaltmaktan kastınız veritabanındaki tabloyu silmekse Delete *From tabloadi şeklinde SQL sorgusu çalıştırmalısınız. Fakat tüm kayıtlar silincektir.

  • hocam dgrid nesnesine kayıt girmek istediğimde yeni satır numarası -1 olarak görünüyor. sebebi ne olabilir? Bi de dgid nesnesine elle giriş yaptığımızda girilen bilgileri veri tabanına kaydetmiyor. c++ builder kullanımı gerçekten çok daha rahattı. orada bu tarz problemler yok denecek kadar az çıkıyoru karşıma.

    • Hata mesaji olarak ne verdigini soylerseniz yardimci olunabilir. Ornege ait indirme linki bulunmakta. İndirip tekrar deneyebilirsiniz.

  • Merhaba ben bir öğrenci takip programı yapmaktayım ödev için, sınıflardaki kayıtlı öğrencilerin çıktısını alıcam okul bilgilerini seçicem fakülte adı,program, sınıf, öğrenim türü seçtikten sonra bana o seçilen değerlerdeki öğrenciler gelicek acaba nasıl yapabilirim bana yardımcı olurmusun. Şimdiden teşekkürler kolay gelsin.

  • Merhaba, çok güzel oldu sayenizde bir rehber yazılımı geliştirdim ancak arama özelliği olmaması kötü oldu. Arama özelliği ekleyebilir miyim? nasıl eklerim? Mesela 1000 tane girdi var ben x adlı kişiyi aratıyorum x adlı kişinin 88. sırada (mesela) yer alıyor , adı soyadı, telefon bilgilerini bana göstersin istiyorum. Mümkünse bilgilendirirseniz sevinirim.

    • EDIT: Sayfayı tekrar inceleyince şimdi fark ettim. Arama nasıl yapılacağı hakkında link verilmiş fakat gözümden kaçmış. Teşekkürler

  • hocam komutu kendi projeme uyarladıgımda sadece kayıt formu yaptım.çalıstırdıgımda kayıtekleme formunu acmayıp kod satırında con u secili hale getirmektedir ama errror mesajı yoktur yardımcı olurmusunuz?

  • merhaba hocam, benim bir sorum olacaktı. müsteri numarasını ikincil anahtar olarak başka bir tabloya eklemek istiyorum ama kullanıcının musteri numarası yerine müsteri adını görmesini istiyorum. bunun için ne yapmalıyım?

  • Öncelikle herkese Merhaba,Hocam ben sizin bahsettiğiniz gibi yaptım her şeyi ancak ek olarak bir şey daha yapmam lazım öncelikle..Benim projem güneş paneline düşen akımı arduıno ile ölçüp c# yapılan bir otomasyonla okuyucuya sunup bu verileri kaydetmek ben bunu yapamıyorum verileri saklamak istiyorum her 3 dakika da bir çekip kaydetmek istiyorum. ve bunu accesse veya excele aktarmak istiyorum bunu nasıl yaparım ?

  • programın ana girdi noktasında şu kısımda “Application.Run(new Form1());” hata veriyor
    ( Hata CS0246 ‘Form1’ türü veya ad alanı adı bulunamadı (bir using yönergeniz veya derleme başvurunuz mu eksik?) ) çözümü nedir

  • Merhaba, benim C# ta uğraştığım bir projem var veritabanı bağlantımı access le yaptım birçok tablom var.
    Tablomdaki isimleri bu kodla comboBox a aşağıdaki kodla yazdırdım.
    OleDbConnection baglanti = new OleDbConnection(@”Provider = Microsoft.Jet.OLEDB.4.0; Data Source =| DataDirectory |\bin\Debug\muhasebe_veritabanı.mdbProvider = Microsoft.Jet.OLEDB.4.0; Data Source = muhasebe_veritabanı.mdb”);
    baglanti.Open();
    DataTable dt = baglanti.GetSchema(“Tables”);
    //dataGrid1.DataSource = dt;

    for (int i = 0; i 799)
    MessageBox.Show(“Klasör Doldu Lütfen yeni Klasör Açın!”, “Bilgilendirme Penceresi”);
    da = new OleDbDataAdapter(sorgu, baglanti);
    ds = new DataSet();
    da.Fill(ds, tablo);
    dataGrid1.DataSource = ds.Tables[tablo];
    baglanti.Close();
    ————————————————————————————————————————
    Buna benzer bir kod ile comboBox tan seçip açılan tabloya ekleme işlemi nasıl yaptırabilirim.

  • Merhabalar, Yaklaşık 2 aydır C# öğrenmeye çalışıyorum.Ve sıfırdan başladım fakat C# oldukça ilgimi çekti.Bugün ise işyerimde kullanabileceğim bir program yaptım.Veri tabanı olarak Access kullandım.Program klasörünü ortak paylaşıma açık ortak klasöre yükledim ve program çalıyor fakat farklı bir pc den aynı anda giriş yapılmak istendiğinde hata veriyor hali hazırda kullanıldığı hatası veriyor.Belirttiğim gibi ,IP’leri farklı olan ve aynı ortak klasörümüzü gören PC’ler için Accesss tabanlı C# programımı nasıl kullanabilir.Program klasörümü ,tüm Pc’lerin ulaşabildiği Ortak Klasöre aldım ve 10 PC’nin hepsi de program klasörünü görüyor.Fakat Aynı anda programı birden fazla PC kullanamıyor ve zaten kullanımda hatası veriyor.Bu durumda programı tüm PC’lere ayrı kurmam mı gerekiyor ?Tüm PC’lere kurunca da veri tabanlarını da ayrı olarak kullanacak.Oledb bağlantısı için de ortak klasördeki yolu yazarsam bu sefer de kullanacağı veritabanı kendi Debug dosyasının içinde olmadığı için hata verir mi ?Yardimlarınız rica.

          • ahmet bey merhaba,güncelleme işlemi ogr_no ya göre yapılıyor peki ama ogr_no güncellenmiyor onu nasıl güncelleyebiliriz?

          • ogr_no alanı burada birincil anahtar olarak ayarlı. Siz veritabanını oluştururken birincil anahtar olarak id isminde bir alan tanımlayıp otomatik sayı olarak ayarlayabilirsiniz. Güncelleme işlemini de bu alana gore yaparak ogrno yu da güncelleyebilirsiniz.

  • System.Data.OleDb.OleDbException hatası alıyorum güncelle ve sil butonları kullanılmıyor neden olabilir yardımcı olabilir yardımcı olabilirseniz sevinirim.

    • Merhaba. Sadece Güncelle ve Sil Buttonlarında mı hata alıyorsunuz?Verileri normal bir şekilde çekebiliyor musunuz? Project menüsünde en altta projeismi_properties e tıklayıp burada Build sekmesinde Platform Target bölümünden x86 seçerek dener misiniz?

      Birde örnek bağlantıyı aşağıdaki linkten de indirebilirsiniz.

      https://yadi.sk/d/gf5VVy4yg5oTz

        • Projeyi görmem lazım. Farklı bir hatada olabilir. Projeyi sıkıştırıp yollayabilirseniz müsait olunca ilgilenebilirim. Facebook sayfamızdan mesaj olarakta atabilirsiniz.

          • Merhaba. Yolladığınız projeyi inceledim. Bir kaç hatanız var. Ama en önemlisi veritabanı tasarımınızla ilgili. Birincil anahtar olacak benzersiz bir alanınız yok. Sil butonunu Ad alanına göre yapıyorsunuz. Böyle bir durumda atıyorum Mehmet olarak giriş yaptığınızda tablonuzda bulunan adı Mehmet olan tüm kayıtlar silinecektir. Bu büyük bir yanlış. Yazımla ilgili hatalarınıza gelecek olursak ;

            Güncelle butonu için:

            cmd.CommandText = “update Tablo1 set Ad='” + tbad.Text + “‘,Soyad='” + tbsoyad.Text + “‘,Telefon='” + tbtel.Text + “‘ where Kimlik_No='” + tbkimlik.Text + “‘”; ,

            şeklinde düzeltin. Benim yaptığım örnekte where kısmından sonraki alan sayısal bir değer olduğu için ‘(tek tırnak) koymamıştım. ama sizde bu alan metin alanı. O yüzden tek tırnak koymalısınız. Söylediklerim Sil butonu içinde geçerli.

            cmd.CommandText = “delete from Tablo1 where Ad='” + tbad.Text + “‘”;

            Bunlar ahricinde datagrid ile ilgili üstüne tıklandığında tüm satırın seçili olması gibi özellikleri yazıdada belirttiğim videodan izleyerek ayarlayabilirsiniz.

            Ama yol yakınken veritabanınızın tasarımını değiştirin.Çünkü en büyük sorun bu. Bir alan ekleyip otomatik sayı olarak ayarlayabilirsiniz mesela. Kolay gelsin.

  • Merhaba Ahmet bey benim bir programda yardımınıza ihtiyacım var. Hoca bir proje verdi fakat ben bir türlü anlayıp da yapamadım. Projem şu şekilde: c# da yazılı sorusu hazırlama programı. Butona basıldığında veri tabanından (access) rastgele 10 tane soruyu tabloya çağıracak. Veri tabanında 100 tane soru olacak. Şekilde bir proje. İlginize şimdiden teşekkürler.

    • Merhaba. Select sorgusunu aşağıdaki gibi oluşturursanız radsgele 10 kaydı getirecektir. Tablo isminin sorular ve Birincil anahtarın ID olduğunu varsayıyorum.

      select top 10 * from sorular order by Rnd(-(100000*ID)*Time())

  • Ahmet bey gerçekten sizi tebrik ediyorum , gerçekten sade anlaşılır ve çözüme çabuk giden bir proje çıkartmışssınız , bundan aylar önce ilk veri tabanı bağlantım sizin sayenizde oldu teşekkür ediyorum

  • Günlerdir yapmaya çalıştığım program var proje için ama bir türlü bitiremedim Lütfen yardımcı olur musunuz ?

    • Hafta sonu vakit bulamayacagim. Sorun yaşadığınız kısımla ilgili bilgi verirseniz yardımcı olmaya calisirim.

  • Merhaba Ahmet Bey;
    Uğraştıkça yeni şeyler çıkıyor 🙂 , iş yerinde ağ bağlantılarında bu aralar sıkça sorun oluyor ve diğer bilgisayar oluşturduğum forma bağlanmak istediklerinde Microsoft.Net Framework başlığı ile uzun bir hata mesajı ile karşılaşıyorlar.

    Yapmak istediğim form açılırken, veri tabanına bağlantı sağlanmadığında mesaj kutusu ile uyarı vermesini ve açılış işleminin iptal edilmesi. Uğraştım ama yapamadım. Bu konuda da yardımcı olabilir misiniz?

  • visual studio da uygulama yapıyorum. izlediğim videoda verileri accsess 2007 den çekmişler ama ben 2010 kullanıyorum.programımda çalışmıyor acaba o yüzden olabilir mi ? videoda kullanılan kod şu şekilde ” Provider=Microsoft.ACE.OLEDB.12.0;Data Source ” bi yardımcı olur musunuz 🙁

      • ‘System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ dosyasını veya derlemesini ya da bağımlılıklarından birini yükleyemedi. Sistem belirtilen dosyayı bulamıyor.

        şeklinde yazıyor

        • Merhaba sorununuz bağlantıyla ilgili görünmüyor. Form1.resx dosyasından kaynaklı görünüyor. Linkteki çözümü deneyebilirsiniz. Ya da projeyi sıkıştırıp yollayabilirsiniz.

  • Merhaba Ahmet Bey;
    Proje veri tabanı Access 2010, ama iş yerinde her bilgisayarda Office 2010 kurulu değil.
    Bazı bilgisayarlarda 2007, bazılarında 2013 var ve bu bilgisayarlar veri tabanı bağlantısı sırasında hata veriyor. Office versiyonunu değiştirmeden, c# da kod ile çözülebilir mi?
    Saygılarımla, iyi çalışmalar.

    • En dusuk versiyona göre ayarlayabilirsiniz kodlarinizi. .accdb yerine .mdb uzantılı access dosyasina çevirin veritabaninizi. Provider kismini da degistirirseniz sorun kalmaz.

      • Teşekkürler, dediğiniz gibi .mdb ile değiştirince çalışmayan bilgisayarlarda çalıştı. Şimdiki sorun ise çözünürlük ayarı 🙂

        Formların Ekran çözünürlüğüne göre ayarlanması için araştırma yaparken

        this.Location = new Point(0, 0);
        this.Size = Screen.PrimaryScreen.WorkingArea.Size;

        bu kodlara ulaştım ve tek sıkıntı 1024×768 çözünürlüğünde formun sağ tarafını göstermiyor. Sizin tavsiye edeceğiniz bir kod var mı her çözünürlüğe göre formu ekrana ayarlaması için.

        • bende ki proje imei nosu var ve bu imei nosuna ait telefon bilgileri var. bir imei nolu telefon kaydettiğim zman aynı imei nolu kaydetmesin mesaj versin

          • İmei numarasi birincil anahtar mı? Birincil anahtarsa try catc bloguyla halledebilirsiniz. Birincil anahtar degilse veritabaninda olup olmadigini kontrol edip if bloğu ile hata mesaji ya da kayit ederek gerçekleştirebilirsiniz.

        • Nasıl bir hata veriyor. Tekrarlayan kayıt olabilir mi? Yani aynı numaraya ait öğrenci kaydı olabilir mi?

          • projemde 3 adet form var ve bu 3 formda ilkinde kayıt sorgulama var diğerlerinde kayıt ekleme silme değiştirme vb bulunuyor. if bloğunu nerede ve nasıl kullanacagım teşekkürler.(imei nolu proje bir imei girildiğnde aynı imeiden varsa uyarı versin istiyorum accesde )

          • İsteğinizle ilgili küçük bir örnek hazırladım. fakat 3-4 dakikalık bir sürede hazırlandığı için biraz düzensiz gelebilir. Ama incelerseniz fikir sahibi olabilirsiniz. Daha düzenli ve detaylı bir anlatımı vakit bulunca hazırlayıp buraya eklerim.

            Buradan indirebilirsiniz.

  • Merhaba Ahmet Bey;
    Arama yaparken, kelimeleri baştan değilde, kelimelerin içeriğinde olanları aratmak istersek yazmış olduğunuz bu satırda nasıl bir değişiklik yapmamız gerekmektedir?
    da = new OleDbDataAdapter(“SElect *from ogrenci where ogr_ad like ‘”+textBox5.Text+”%'”, con);

    • Merhaba.
      da = new OleDbDataAdapter(“SElect *from ogrenci where ogr_ad like ‘%”+textBox5.Text+”%’”, con);
      şeklinde kullanabilirsiniz.

      • Merhaba,

        Dediğiniz yöntemi denemiştim ama yine aynı şekilde arama yapıyor,

        like ‘%” +textBox5.Text+ “%'”
        like ‘%” +textBox5.Text+ “‘%”
        like ‘%” +textBox5.Text+ “‘”

        bunları denedim. Başka nasıl yapabilirim 🙂

        • da = new OleDbDataAdapter(“SElect *from ogrenci where ogr_ad like ‘%”+textBox5.Text+”%'”, con);

          yukarıdaki örnek için şu anda deneyip çalıştığını görmüş olduğum kod parçası. Tekrar kontrol edermisiniz. Belki tek tırnak ve çift tırnaklar karışmış olabilir.

  • Iyi gunler acil yardim istyorum visual studio 2015 programinda visual basic olarak program tasarimimi yaptim suan access 2007dede veritabani tablolarimi olusturdum bunlari birbirine nasil bagliyacagimi bilmiyorum bi kac birsey denedim olmadi final sinavim bu program okulu btrmem buna bagli yardim edin nolur otopark takip sistemi ypiyorum ama veri baglanti kismina gelince tikandim bnim hic bir formumda using system liolan komut satrlari yok ne ypmam lazim ufak kizim var bde o uyudukca yapmaya calusiyorum bya zordayim

  • Merhabalar, anlatımınız için teşekkür ederim. Anlatımınızdan faydalanarak küçük bir çalışma hazırladım ve sorunsuz çalışıyor. Sadece veri tabanını ağda erişime açmak kaldı…

    Benim sorum; Access Veri tabanını ağ üzerinde erişime açmak.
    Bu nedenle;
    “Provider=Microsoft.ACE.OleDb.12.0;Data Source=deneme.accdb”
    (\\192.168.1.16\Debug\deneme.accdb) böyle yazınca hata veriyor.

    bu satırı nasıl düzenlemeliyim ya da ağda kullanabilmek için ek kodlara mı ihtiyaç var?
    Saygılarımla kolay gelsin.

    • Merhaba. Öncelikle herhangi bir klasörü paylaşıma açtığınızı varsayarak yazıyorum. Bu paylaşılan klasörün içine tüm proje yerine sadece veritabanı dosyasını atabilirsiniz. Benim örneğini vereceğim Connection String cümlesini kısaca açıklayayım. Masaüstü Bilgisayarda(DESKTOPAC) Paylasim isimli klasör oluşturarak paylaşıma açtım ve içine okul.accdb dosyasını attım. Daha sonra dizüstü bilgisayarımda projeyi açarak Bağlantı cümlesini şu şekilde değiştirdim.

      con = new OleDbConnection(“Provider=Microsoft.ACE.Oledb.12.0;Data Source=\\\\DESKTOPAC\\Paylasim\\okul.accdb”);

      Sizde bu şekilde değiştirdiğinizde çalışacaktır.

      • Merhaba Ahmet Bey,

        Dediğiniz gibi paylaşımdaki klasöre sadece veritabanını attım ve klasöre Okuma/Yazma yetkisi vererek ;
        Hem ip ile (\\\\192.168.1.16\\Paylasim\\deneme.accdb)
        hem de bilgisayar ismi (\\\\bilgisayaradi\\Paylasim\\deneme.accdb) ile ayrı ayrı dediğiniz şekilde kodlara ekleyerek projeyi ağdaki başka bir bilgisayarda çalıştırarak denedim ancak şu şekilde hata veriyor;

        “Microsoft Access veritabanı alt yapsı \\bilgisayaradi\Paylasim\deneme.accdb dosyasını açamadı veya bu dosyaya yazamadı. Dosya bir başka kullanıcı tarafından özel kullanımda açılmış ya da verilerini görüntüleme veya yazma izniniz yok.”

        Access ayarlarında, varsayılan açma yöntemi de Paylaşılan seçili ama deneme yanılma yöntemleri sonuçsuz kaldı 🙂 bu sorunu nasıl çözebilirim.

        Saygılarımla kolay gelsin.

        • Bağlantı cümlesi mesajda olduğu gibi olacak. Bizzat denedim bu şekilde ulaşılıp kullanılabiliyor. Siz normalde windows üzerinden erişebiliyormusunuz peki? Bir de dosyayı açıp değişiklik yapabiliyormu sunuz?(Windows üzerinden)

          • Kusura bakmayın, Ağ Bağlantı Ayarlarından Parola Korumalı Paylaşımı kapatınca oldu; ama paylaşımda olan diğer dosyalara erişilmemesi içi bilgisayar adı ve şifresini kod içine nasıl yazabilirim.

          • Bu bağlantı işlemlerini SQL Server üzerinden yapsaydınız bu tarz işlemler daha rahat olurdu. Şu anki sorununuz için aklıma gelen en kolay yöntem bu dosyayı erişilmesini istemediğiniz dosyalarla aynı klasöre koymayıp farklı bir klasöre koyarak paylaşım izinlerini ayarlamak. Ana makinede Paylaştığınız klasörde sağ tıklayarak Özellikler – Güvenlik sekmesinde kullanıcılara özel Tam Denetim, Değiştirme, Okuma, Yazma ..ayarlarını İzin Ver/İzin Verme olarak ayarlayabilirsiniz.

          • Merhabalar Ahmet Bey;

            İnşallah sizin bu anlatımlarınız sayesinde SQL Server ile de çalışmalar yaparım 🙂

            Ağdaki klasöreler için de paylaşım klasörünün ismini $ işareti ile ağda gizleyerek şimdilik çözüm getirdim 🙂

            Paylaşımlarınız için tekrar teşekkürler,
            Saygılarımla iyi çalışmalar.

      • Ben veritabanının içine işletme kaydediyorum comboboxta da işletme adları var eğer işletmeyi silceksem comboboxtan seçip silmek istiyorum

          • private void button2_Click(object sender, EventArgs e)
            {
            baglanti.Open();
            komut = new OleDbCommand();
            komut.Connection = baglanti;
            komut.CommandText = “delete from Ist where istad=” + comboBox1.Items + “”;
            komut.ExecuteNonQuery();
            baglanti.Close();
            goster();
            }

  • Merhaba. Veritabanindan gelen veriyi değişkene nasil atabilirim. Yani herhangi bir alanda bulunan veriyi datagride değil de değişkene almam gerekiyor.

  • Merhaba. Öncelikle teşekkür ederim. Ekleme silme işlemlerini parametre kullanarak nasil yapabiliriz. Bununla ilgili yardimci olursanız sevinirim.

    • Merhaba bununla ilgili Ekle Butonu için aşağıda yazdığım kodları inceleyebilirsiniz. Parametre kullanarak Ekleme işlemini bu şekilde yapabilirsiniz. Aynı şekilde Güncelleme ve Silme işlemi için kodları uyarlayabilirsiniz.

      İsterseniz buradan sorunuzla ilgili örneğe ulaşabilirsiniz.

      string sorgu = “Insert into Personel (ogr_no,ogr_ad,ogr_soyad,ogr_tel) values (@no,@ad,@soyad,@tel)”;
      cmd = new OleDbCommand(sorgu, con);
      cmd .Parameters.AddWithValue(“@no”, Convert.ToInt32(tbno.Text));
      cmd .Parameters.AddWithValue(“@ad”, tbad.Text);
      cmd .Parameters.AddWithValue(“@soyad”, tbsoyad.Text);
      cmd .Parameters.AddWithValue(“@tel”, tbtel.Text);
      baglanti.Open();
      cmd .ExecuteNonQuery();
      con.Close();
      griddoldur();

    • Datagrid tıkladıktan sonra Properties Penceresinde Appearance altında ColumnHeadersDefaultCellStyle bölümünde “…” butonu tıklanır.Gelen pencerede Font altında Bold özelliği true yapılır.

  • merhaba dediğiniz gibi yanlış kısımları düzelttim fakat bu sefer kayıt butonuna basınca aynı hatayı alıyorum ama sadece ikinci kez kayıt yapmak istediğimde oluyor ilk bölümü kaydediyor ikincide hatayı alıyorum ayrıca datagridde ikinci yani boş satıra tıklayıp textboxa yazı yazmak için tıklıyorum ve ilk kayıtı geri yüklüyor textboxlara sebebini biliyor musunuz ?

  • merhaba dediğiniz kodlarda bir sıkıntı yaşamıyorum ama güncelle butonuna tıkladığımda executenonquery hatası veriyor düzenlemiyor yani yardımcı olursanız sevinirim.

  • Merhaba çok güzel anlatmışsınız çok teşekkürler. Ben yazılımda yeniyim ilk defa uğraşıyorum bir hata çıkıyor yardımcı olursanız sevinirim datagridview de cellenter yapmışsınız ama bende CellContentClick çıkıyor değiştiremedim nasıl ayarlayabilirim bunu?

    • Örnek üzerinden cevap vereyim. Update için mesela
      cmd.CommandText = “update ogrenci set ogr_ad='” + tbad.Text.Replace(“‘”, “””) + “‘,ogr_soyad='” + tbsoyad.Text + “‘,ogr_tel='” + tbtel.Text + “‘ where ogr_no=”+tbno.Text+””;

      Bu şekilde yazarak yani Replace ile değiştirerek tek tırnak kaydetmesini sağlayabilirsiniz.

  • Datagridviewe girdigim verilerin tamamini butoona basinca accese kaydermesini istiyorum yardimci olacak var mi

  • Merhaba
    Access dosyası exe nin yanında olmak zorundamı yoksa ben bu Access dosyasını mesela "C:Program FilesSKS" gibisinden bir konuma atıp ordan veri çekebilirmiyim.

      • Şirket Bilgisarındayım ve sanırım bu pc den kaynaklı bir sorundan ötürü olmuyormuş cevap için teşekkürler eve geçince uygulayabilirim.

  • ekleme silme güncelleme olayları sorunsuz bir şekilde çalışmakta fakat benim öğrenmek istediğim bir şey daha var access'e link kısmı oluşturup oraya girdiğimiz linki mesela video linki koyduk c# da yaptığımız programdan linke basınca link sayfasına atmasını sağlayabilirmiyiz.

  • Merhaba
    Benim ihtiyacım olan bir kaydı seçmek değilde 10 kayıt'ın bir okul ismini seçip aynı anda bir butonla değiştirmek bunu yapabilirmiyim.Eğer böyle bir çalışma mantığı varsa söylebilirmisiniz.Teşekkürler…

  • İyi günler bir projem mevcut ve bu projede her şeyi ayarlamış olmama rağmen con.Open(); kısmında hata alıyorum yardımcı olabilir misiniz

  • Herşey çalıştı ancak Data Gridde seçili sütun Textboxlara gitmiyor ve nesne isimleri de doğru.

    Nasıl düzeltebilirim kodu kopyala yapıştır yaptım ve kendi verdiğim textbox isimlerine göre düzenledim

  • Hocam 'Microsoft.ACE.Oledb.12.0' sağlayıcısı yerel makine kayıtlı değil. hatasını alıyorum herşey aynı dediğiniz gibi neden acaba

    • Yukarıda menüden PROJECT– Burada en altta Properties' e tıklayıp açılan pencerede soldan Build' i seçip Platform Target Bölümüne Any CPU seçin.

  • Hocam benim acces ile visual studio aynı projede çalistirmam gerekiyor yani access te bir form açıp buton atacağım butona bastığım zaman da c# taki form sayfası gözükecek bunu yapmam mümkun mudur ?? Acil cevap atarsaniz sevinirim ???

    • Kontrollere ait Name özelliklerine dikkat ettiniz mi? Birde ne tür bir hata aldığınızı yazarsanız yardımcı olabilirim.

  • merhaba hocam benim aynı projede açtığım ayrı formlarda birinde kayıt yaptırıp diyer formda da gridwiev koyup orada gösterme gibi bir durumum var kayıt yapıyorum ama diyer formda göstertemiyorum. gridwiev deki forma hangi komutları yazmam lazım ?

Yorum yap