Skip to main content

AccessTr.neT


C# İnsert İnto Hatası

C# İnsert İnto Hatası

#1
Merhaba;

C# ta Access veritabanı kullanarak veri kaydetmeye çalışıyorum. Daha önce vb.net te defalarca kullandığım ve hiç hata almadığım kodu internetteki örneklerden de yararlanarak C# a uyarladım. Ancak kod "insert into söz diziminde hata" şeklinde hata vermektedir. Kodu inceledim herhangi bir hata göremedim. İnternette araştırma yaptım "not, is" gibi cümleler programın içerisinde daha öncede ayrılmış alanlar olduğu için hata verdiğini ve bu cümlelerin kullanılmaması gerektiğini belirten bir yazı okudum. Bu alanları içeren kısımları düzelttim ancak yinede hata vermektedir.

Kullanmış olduğum kod;
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source='veritabani.accdb'");
           if (con.State == ConnectionState.Closed || con.State == ConnectionState.Broken)
               con.Open();
           String cmd;
           cmd = ("INSERT INTO t_firma(sira_numarasi,firma_unvan,firma_telefon,firma_faks,firma_mail,firma_adres,firma_ulke,firma_tipi,firma_mesaj,kayit_kullanici,kayit_tarihi) values (" + txtSiraNumarasi.Text + " , '" + txtFirmaUnvani.Text + "' , '" + txtFirmaTelefon.Text + "' ,'" + txtFirmaFaks.Text + "' , '" + txtFirmaMail.Text + "' , '" + txtFirmaAdres.Text + "' , '" + txtFirmaUlke.Text + "' , '" + txtFirmaTipi.Text + "' , '" + txtFirmaNot.Text + "' , '" + txtEkleyenKull.Text + "' , " + txtEklemeTarih.Text + "");
           OleDbCommand kaydet = new OleDbCommand(cmd, con);
           kaydet.ExecuteNonQuery();
           con.Close();


Yazı ve sayı alanlarındaki farklılıkları da kontrol ettim (tek tırnak çift tırnak alanlarını) onlarda doğru neyden dolayı hata veriyor bir türlü bulamadım.
Örnek dosyada ektedir.

.rar WindowsFormsApplication1.rar (Dosya Boyutu: 72,99 KB | İndirme Sayısı: 2)
Dünyada Yetirince Anlaşılır Dile Konuşan İnsanlar Var Birazcık da Anlaması İçin Düşünmesi Gerekiyor İnsanların
Cevapla
#2
Bu şekilde INSERT INTO işlemi ile yanlış yapıyorsunuz. Parametreli kullanım ile veri eklemeniz lazım yoksa virgüllü bir değer eklenirse sıkıntı yaşarsınız. Ayrıca güvenlik açısından da ciddi sıkıntı olur.

Sorunuza gelecek olursak Sql cümlenizi yanlış yazmışsınız. cmd = ( ile başlayan yerdeki ( işaretini kaldırın. Satırın sonu ise şu şekilde bitmeli:

 '" + txtEklemeTarih.Text + "')";
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#3
Alpeki hocam;

Tavsiyeniz için teşekkür ederim. Parametre kullanımının önemi bilmiyordum internette de hiç denk gelmemiştim.

Daha önce vb.net te veritabanına özel karakter kaydetmek istediğimde (" ' . / vb.) hata veriyordu hiç bundan dolayı olabileceğini düşünmemiştim.

Sorun alpeki hocamın parametre tavsiyesi sayesinde çözülmüştür.

Saygılar.
Dünyada Yetirince Anlaşılır Dile Konuşan İnsanlar Var Birazcık da Anlaması İçin Düşünmesi Gerekiyor İnsanların
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task