C# Access Update Veri Güncelleme

0

  OleDbCommand komut = new OleDbCommand();
                baglanti.Open();
                komut.Connection = baglanti;
                komut.CommandText = "update Profil set İsim='"+txtisim.Text+"',Sınıf='"+txtsinif.Text+"',Numara='"+txtnumara.Text+"',9 sınıf='"+txt9sinif.Text+"',10 sınıf='"+txt10sinif.Text+"',11 sınıf='"+txt11sinif.Text+"',12 sınıf='"+txt12sinif.Text+"',Hakkında='"+txtnot.Text+"' where id="+txtid.Text+"";
                komut.ExecuteNonQuery();
                baglanti.Close();
                tablo.Tables["verilerigöster"].Clear();
                verilerigöster();

Kodlarını güncelleme buttonuna ekledim fakat  aşağıdaki kod hata vermekte.

 

komut.ExecuteNonQuery();

hata vermesini önlemek için try catch komutlarını kullandım fakat bu sorunu hayla çözemedim.

kodlarda benim görmedim hata mı var acaba ?

akisplays akisplays (3)
9 yıl önce sordu

    Toplam 2 Cevap


    0

    Kodunuz ile ilgili bir kaç önerim var.

    Öncelikle kodunuzda string birleştirme kullanmayın. Yani Sql sorgularını birleştirerek oluşturmayın.

    Bunun yerine parametre kullanin. Aşağıdaki örnekte olduğu gibi.

           
                OleDbCommand komut = new OleDbCommand();  
                komut.Connection = baglanti;        
                komut.CommandText = "update Profil set Isim=@pIsim, Not=@pNot";
                komut.Parameters.AddWithValue("@pIsim", txtisim.Text);
                komut.Parameters.AddWithValue("@pNot", txtnot.Text);
                baglanti.Open();      
                komut.ExecuteNonQuery();
                baglanti.Close();

    Parametre kullanırsanız kodunuz daha güvenli olur. Aynı zamanda tırnak işaretlerinden kaynaklanan hatalardan da kurtulursunuz.

    Önce @ işareti ile sorgunun içinde paremetre alanları tanimliyorsunuz.

    Daha sonra  aşağıdaki gibi bu paremetreye değer gönderiyorsunuz.

     komut.Parameters.AddWithValue("@pIsim", txtisim.Text);

    Diğer bir öneri tablodaki Kolon adlarında türkçe karakter kullanmayın.  İsim yerine Isim, Sınıf yerine Sinif gibi Türkçe karakter olmayan isimler verin.

    alattin alattin (17127)
    9 yıl önce cevaplandı

      0

      Teşekkür Ederim fakat hayla sorun yaşıyorum cok fazla kod ekleyip cıkardığımdan karıştırdım. Dediğiniz gibide yaptım ama 

      komut.ExecuteNonQuery();

      bu komut hata veriyor veritabanında düzenleme yapıp ekledim tekrar ve yeni ayar yaptım fakat sorun hayla nerede kaynaklanıyor çözemedim.

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using System.Windows.Forms;
      using Microsoft.Win32;
      using System.Data.OleDb;
      
      
      namespace Den1
      {
          public partial class profil : Form
          {
            
              public girispaneli frmgiris;
              OleDbCommand cmd;
            
      
              public profil()
              {
                  InitializeComponent();
                  
              }
      
              public OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sql.mdb");
              public OleDbCommand komut = new OleDbCommand();
              DataSet tablo = new DataSet();
            
              public object Listview1 { get; private set; }
      
              private void verilerigöster()
              {
      
                  baglanti.Open();
                  OleDbDataAdapter yenial = new OleDbDataAdapter("Select * from Profil", baglanti);
                  yenial.Fill(tablo, "Profil");
                  dataGridView1.DataSource = tablo.Tables["Profil"];
                  baglanti.Close();
      
                  { 
                  }
                 
              }
               
      
              private void button2_Click(object sender, EventArgs e)
              {
                  buttonguncelle.Enabled = true;
                  txtisim.Enabled = true;
                  txtsinif.Enabled = true;
                  txtnumara.Enabled = true;
                  txt9sinif.Enabled = true;
                  txt10sinif.Enabled = true;
                  txt11sinif.Enabled = true;
                  txt12sinif.Enabled = true;
                  txt12sinif.Enabled = true;
                  txtnot. Enabled = true;
                                        
              }
      
              private void profil_Load(object sender, EventArgs e)
              {
                  // TODO: This line of code loads data into the 'sqlDataSet2.Profil' table. You can move, or remove it, as needed.
                  this.profilTableAdapter1.Fill(this.sqlDataSet2.Profil);
                  verilerigöster();
                 
      
                  // TODO: This line of code loads data into the 'sqlDataSet.Profil' table. You can move, or remove it, as needed.
                 
      
              }
      
              private void buttonkaydet_Click(object sender, EventArgs e)
              {
      
                
      
              }
      
              private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
              { 
      
              }
      
              private void buttonguncelle_Click(object sender, EventArgs e)
              {
      
      
                  OleDbCommand komut = new OleDbCommand();
                  baglanti.Open();
                  komut.Connection = baglanti;
                  komut.CommandText = "update Profil set Isim=@pIsim, sinif=@psinif, Numara=@Numara, 9sinif=@9sinif, 10sinif=@10sinif, 11sinif=@11sinif, 12sinif=@12sinif, not=@not";
                  komut.Parameters.AddWithValue("@pIsim", txtisim.Text);
                  komut.Parameters.AddWithValue("@psinif", txtsinif.Text);
                  komut.Parameters.AddWithValue("@pNumara", txtnumara.Text);
                  komut.Parameters.AddWithValue("@p9sinif", txt9sinif.Text);
                  komut.Parameters.AddWithValue("@p10sinif", txt10sinif.Text);
                  komut.Parameters.AddWithValue("@p11sinif", txt11sinif.Text);
                  komut.Parameters.AddWithValue("@p12sinif", txt12sinif.Text);
                  komut.Parameters.AddWithValue("@pnot", txtnot.Text);
                  komut.ExecuteNonQuery();
                  baglanti.Close();
      
      
              }
      
              private void buttonyenikayit_Click(object sender, EventArgs e)
              {
                  verilerigöster();
      
              }
      
              private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
              {
                  txtid.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
              }
          }
      }
      

       

      akisplays akisplays (3)
      9 yıl önce cevaplandı

      • Benim koduma dikkat edin, komut'a bağlantıcı açmadan önce atayın. Daha sonra bağlantıyı açın. Hâlâ hata verirse hatayı yazarsanız daha iyi olur. alattin 9 yıl önce
      • Kodunuzdan kopyaa yapıştır ile almıştım, başka hatalar da varmış dün o sebepten hatalı yazmışım kodu. alattin 9 yıl önce
      • OleDbCommand komut = new OleDbCommand(); komut.Connection = baglanti; komut.CommandText = "update Profil set Isim=@pIsim, sinif=@psinif, Numara=@Numara, 9sinif=@9sinif, 10sinif=@10sinif, 11sinif=@11sinif, 12sinif=@12sinif, not=@not"; komut.Parameters.AddWithValue("@pIsim", txtisim.Text); komut.Parameters.AddWithValue("@psinif", txtsinif.Text); komut.Parameters.AddWithValue("@pNumara", txtnumara.Text); komut.Parameters.AddWithValue("@p9sinif", txt9sinif.Text); komut.Parameters.AddWithValue("@p10sinif", txt10sinif.Text); komut.Parameters.AddWithValue("@p11sinif", txt11sinif.Text); komut.Parameters.AddWithValue("@p12sinif", txt12sinif.Text); komut.Parameters.AddWithValue("@pnot", txtnot.Text); baglanti.Open(); komut.ExecuteNonQuery(); baglanti.Close(); Şuan sizin dediğiniz gibi yazdım birde siz yanlış yazmışınız komutu en başa tanımlamamız gerek orada hata verir. Neyse gelelim hataya hata hep aynı yerden vermeye devam ediyor. Aşağıdaki kod hep güncelle butonuna tıklandığında hata veriyor. komut.ExecuteNonQuery(); akisplays 9 yıl önce
      • komut.ExecuteNonQuery(); kodunda hep hata alıyorum akisplays 9 yıl önce
      • Hatayı burada gönderirseniz hatanın neden kaynaklandığını kolayca söyleyebilirim alattin 9 yıl önce
      üyelik gerektirir

      Cevap yazabilmek için üye girişi yapmalısınız.

      Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
      uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol