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 ?
Toplam 2 cevap
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.
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(); } } }
alattin 9 yıl önce
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.
akisplays 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
alattin 9 yıl önce
Hatayı burada gönderirseniz hatanın neden kaynaklandığını kolayca söyleyebilirim