Şimdi Ara

C# Veritabanı bağlantısı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
0
Favori
1.379
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C# da bir gano hesaplama programı yazıyorum. Kullanıcı girişi de olsun istedim. Access ile kullanıcı adı şifre ad soyad kaydediyorum veritabanıma. Birde bu kullanıcıların girdikleri notları da kaydetmek istedim. Fakat kaydet dediğimde veritabanına istediğim verileri ekleyemiyorum. Bir hata da vermiyor. kmt.ExecuteNonQuery(); bu komutu aktif ettiğimde "Dizin veya birincil anahtar Null değerini içeremez" hatasını alıyorum. İlk veritabanı uygulamam acemiliğimi mazur görün. Yardımlarınızı bekliyorum.

    Buton içindeki kodlar :
    Deneme olarak sadece 2 notu kaydettiriyorum burada. Nerde hata yapıyorum?


     
    private void button3_Click(object sender, EventArgs e)
    {
    OleDbConnection baglan_access = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=obisis.accdb");

    OleDbCommand kmt = new OleDbCommand();

    baglan_access.Open();

    kmt.Connection = baglan_access;

    kmt.CommandText = "insert into ogrenci_giris (mat1,fiz1) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";

    // kmt.ExecuteNonQuery();

    baglan_access.Close();

    }



     C# Veritabanı bağlantısı


     C# Veritabanı bağlantısı



    < Bu mesaj bu kişi tarafından değiştirildi vüvüzela -- 26 Haziran 2012; 10:33:21 >







  • problem çözüldü. insert into yerine update kullanmam gerekiyormuş fakat şimdi de programı kapattığımda ve tekrar ekleme yapacağım zaman diğer bütün notları siliyor ve yeni eklediğim kalıyor sadece veritabanında. Bunu çözemedim.
  • Primary key ile varsa update et yoksa insert et gibisinden yaz. Çözülür.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: KillForYou!

    Primary key ile varsa update et yoksa insert et gibisinden yaz. Çözülür.

    Tam olarak anlatamadım sanırım. update yapınca yeni gelen bir bilgi diğerlerini siliyor üzerine yazılıyor.
  • quote:

    Orijinalden alıntı: vüvüzela

    quote:

    Orijinalden alıntı: KillForYou!

    Primary key ile varsa update et yoksa insert et gibisinden yaz. Çözülür.

    Tam olarak anlatamadım sanırım. update yapınca yeni gelen bir bilgi diğerlerini siliyor üzerine yazılıyor.

    Anlıyorum. Ben de bir if döngüsüyle update ve insert komutlarını denemenizi öneriyorum.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: vüvüzela

    problem çözüldü. insert into yerine update kullanmam gerekiyormuş fakat şimdi de programı kapattığımda ve tekrar ekleme yapacağım zaman diğer bütün notları siliyor ve yeni eklediğim kalıyor sadece veritabanında. Bunu çözemedim.

    İnsert into olarak kalması gerekiyor kayıt yapıyorsa. update sadece günncelliyor ?? ondan olabilir mi
  • quote:

    Orijinalden alıntı: vüvüzela

    quote:

    Orijinalden alıntı: KillForYou!

    Primary key ile varsa update et yoksa insert et gibisinden yaz. Çözülür.

    Tam olarak anlatamadım sanırım. update yapınca yeni gelen bir bilgi diğerlerini siliyor üzerine yazılıyor.

    Kardes update sadece günceller verinin üzerine değiştirdiğin bilgiyi kaydeder.
    Insert ınto YENİ kayıt yapar
  • Yapay Zeka’dan İlgili Konular
    C# Kullanıcı yetkilendirme
    11 yıl önce açıldı
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: ceess

    quote:

    Orijinalden alıntı: vüvüzela

    quote:

    Orijinalden alıntı: KillForYou!

    Primary key ile varsa update et yoksa insert et gibisinden yaz. Çözülür.

    Tam olarak anlatamadım sanırım. update yapınca yeni gelen bir bilgi diğerlerini siliyor üzerine yazılıyor.

    Kardes update sadece günceller verinin üzerine değiştirdiğin bilgiyi kaydeder.
    Insert ınto YENİ kayıt yapar

    Yapma ya? Öyle mi?

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • Öncelikle ilginiz için teşekkür ederim Hocam. Daha acemiyim o yüzden düzelteyim derken iyice karıştırıyorum. Kodları ve ekran görüntüsünü koyayım. Kodlar üzerinden hatalarımı söylerseniz daha iyi anlayabilirim.

    Burada öğrenci numarası şifre ad soyad alıyorum :

    private void button1_Click(object sender, EventArgs e) 
    {


    bag.Open();

    kmt.Connection = bag;
    kmt.CommandText = "insert into ogrenci_giris VALUES (" + Convert.ToInt32(textBox1.Text) + ",'" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')";
    kmt.ExecuteNonQuery();
    kmt.Dispose();
    bag.Close();

    }


    Burda da girilen öğrenci no ya göre dersleri kaydetmek istiyorum :

    private void button3_Click_1(object sender, EventArgs e) 
    {
    string sorgu = "select * From ogrenci_giris where ogrenci_no=" + Form3.x + "";

    OleDbConnection baglan_access = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ogrenci_giris.accdb");

    baglan_access.Open();

    OleDbCommand kmt = new OleDbCommand(sorgu, baglan_access);

    OleDbDataAdapter adtr = new OleDbDataAdapter("select * From ogrenci_giris where ogrenci_no=" + Form3.x + "", baglan_access);

    OleDbDataReader oku = kmt.ExecuteReader();

    kmt.CommandText = "update ogrenci_giris SET mat1='" + textBox1.Text + "' , fiz1='" + textBox2.Text +
    "', lineer='" + textBox3.Text + "', bmg= '" + textBox4.Text + "', kimya='" + textBox5.Text +
    "', pro1='" + textBox6.Text + "' , pro2='" + textBox7.Text + "', eOlcme='" + textBox8.Text +
    "', ayrik='" + textBox9.Text + "', mat2='" + textBox10.Text + "' , fiz2='" + textBox11.Text +
    "', eDevreler='" + textBox12.Text + "', veri='" + textBox13.Text + "' , nesne='" + textBox14.Text +
    "', muhMat='" + textBox15.Text + "', dif='" + textBox16.Text + "' , sayisal='" + textBox17.Text +
    "', olasilik='" + textBox18.Text + "', elektroinkDev='" + textBox19.Text + "' , lojik='" + textBox20.Text +
    "', eLab='" + textBox21.Text + "', proDilleri='" + textBox22.Text + "' , dosya='" + textBox23.Text +
    "', sistemPro='" + textBox24.Text + "', mikro='" + textBox25.Text + "' , veritabani='" + textBox26.Text +
    "', sSisLab='" + textBox27.Text + "', yazMuh='" + textBox28.Text + "' , isletimSis='" + textBox29.Text +
    "', gomuluSis='" + textBox30.Text + "', sisAnalizi='" + textBox31.Text + "' , bicimsel='" + textBox32.Text +
    "', sec5='" + textBox33.Text + "', sec6='" + textBox34.Text + "' , secGuz='" + textBox35.Text +
    "', secBahar='" + textBox36.Text + "', bitirmeOdevi='" + textBox37.Text + "' , bTasarim='" + textBox38.Text +
    "', bMimarisi='" + textBox39.Text + "', bGrafik='" + textBox40.Text + "' , bAglari='" + textBox41.Text +
    "' , optim='" + textBox42.Text + "' where ogrenci_no=" + Form3.x + "";

    kmt.ExecuteNonQuery();

    baglan_access.Close();

    MessageBox.Show("Kaydedildi");
    }


    Bu da aldığım hata :

     C# Veritabanı bağlantısı




  • quote:

    Orijinalden alıntı: KillForYou!


    quote:

    Orijinalden alıntı: vüvüzela

    quote:

    Orijinalden alıntı: KillForYou!

    Primary key ile varsa update et yoksa insert et gibisinden yaz. Çözülür.

    Tam olarak anlatamadım sanırım. update yapınca yeni gelen bir bilgi diğerlerini siliyor üzerine yazılıyor.

    Anlıyorum. Ben de bir if döngüsüyle update ve insert komutlarını denemenizi öneriyorum.

    Kullanıcıları önce kaydediyorum. yani notlar la kullanıcıyı aynı anda kaydetmiyorum. Aşağıda hepsini birden update yaptığım için 1 kayıt değişse hepsi siliniyor. benim amacım öncekileri koruyup üzerine yazmasını sağlamak olmalı sanırım.

    kmt.CommandText = "update ders SET mat1='" + textBox1.Text + "' , fiz1='" + textBox2.Text + 
    "', lineer='" + textBox3.Text + "', bmg= '" + textBox4.Text + "', kimya='" + textBox5.Text +
    "', pro1='" + textBox6.Text + "' , pro2='" + textBox7.Text + "', eOlcme='" + textBox8.Text +
    "', ayrik='" + textBox9.Text + "', mat2='" + textBox10.Text + "' , fiz2='" + textBox11.Text +
    "', eDevreler='" + textBox12.Text + "', veri='" + textBox13.Text + "' , nesne='" + textBox14.Text +
    "', muhMat='" + textBox15.Text + "', dif='" + textBox16.Text + "' , sayisal='" + textBox17.Text +
    "', olasilik='" + textBox18.Text + "', elektroinkDev='" + textBox19.Text + "' , lojik='" + textBox20.Text +
    "', eLab='" + textBox21.Text + "', proDilleri='" + textBox22.Text + "' , dosya='" + textBox23.Text +
    "', sistemPro='" + textBox24.Text + "', mikro='" + textBox25.Text + "' , veritabani='" + textBox26.Text +
    "', sSisLab='" + textBox27.Text + "', yazMuh='" + textBox28.Text + "' , isletimSis='" + textBox29.Text +
    "', gomuluSis='" + textBox30.Text + "', sisAnalizi='" + textBox31.Text + "' , bicimsel='" + textBox32.Text +
    "', sec5='" + textBox33.Text + "', sec6='" + textBox34.Text + "' , secGuz='" + textBox35.Text +
    "', secBahar='" + textBox36.Text + "', bitirmeOdevi='" + textBox37.Text + "' , bTasarim='" + textBox38.Text +
    "', bMimarisi='" + textBox39.Text + "', bGrafik='" + textBox40.Text + "' , bAglari='" + textBox41.Text +
    "' , optim='" + textBox42.Text + "' where ogrenci_no=" + Form3.x + "";




  • Bütün dersleri tek tek veritabanından çekersin.Yeni bilgileri de ekleyerek veritabanına update komutuyla kaydedersin.Benim böyle bir sorunda kullandığım yöntem bu.Ancak daha kısa bir yolu varsa öğrenmek isterim.
  • bende öyle yaptım. daha kısa bir yol vardır elbette paylaşmak isteyen olursa güzel olur.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.