Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
11
Cevap
2478
Tıklama
0
Öne Çıkarma
Syntax error in INSERT INTO statement. Hatası

N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ogrenciler.accdb");
baglanti.Open();
int no = Convert.ToInt32(notext.Text);
int yas = Convert.ToInt32(yastext.Text);
string ad = adtext.Text;
string soyad = soyadtext.Text;
OleDbCommand komut = new OleDbCommand("insert into ogrenci(no, ad, soyad, yas) values('" + no + "','" + ad + "','" + soyad + "','" + yas + "')", baglanti);


komut.ExecuteNonQuery();
baglanti.Close();
sonuc.Text = "Kayıt Tamamlandı.";


Bu sorgumda nasıl bir hata var çözemedim. Bir de siz bakar mısınız?




P projeyazilim
8 yıl (213 mesaj)
no , ad , soyad , yas alanlarının database tablondaki alanlar ve tipleri ile yanı olduğunu düşünerek . aşağıdaki kod dener misin. olmaz ise table design resmini ekle buraya bakalım.

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

if (baglanti.State==ConnectionState.Closed)
{
baglanti.Open();
}
OleDbCommand komut = new OleDbCommand("insert into ogrenci(no, ad, soyad, yas) values(@no,@ad,@soyad,@yas)", baglanti);
komut.Parameters.Add("@no", OleDbType.Integer).Value = Convert.ToInt32(notext.Text);
komut.Parameters.Add("@ad", OleDbType.VarChar,50).Value = Convert.ToInt32(adtext.Text);
komut.Parameters.Add("@soyad", OleDbType.VarChar, 50).Value = Convert.ToInt32(soyadtext.Text);

komut.Parameters.Add("@yas", OleDbType.Integer).Value = Convert.ToInt32(yastext.Text);


komut.ExecuteNonQuery();
baglanti.Close();
sonuc.Text = "Kayıt Tamamlandı.";


Bu mesaja 1 cevap geldi.

K Kaygerya
8 yıl (8334 mesaj)
Normal yazilim mantiginda hata tutmak cok onemlidir. Bu islemde ne yaparsaniz yapin sonuc islem basarili donecektir.
Try blogu icine kodlarinizi yazip basarili mesaji verin catch durumunda gelen parametreleri loglayin ve islemin basarili olmadigi mesajini verin ve finally blogunda da baglantinizi kapatip isi bitirin.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
quote:

Orijinalden alıntı: projeyazilim

no , ad , soyad , yas alanlarının database tablondaki alanlar ve tipleri ile yanı olduğunu düşünerek . aşağıdaki kod dener misin. olmaz ise table design resmini ekle buraya bakalım.

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

if (baglanti.State==ConnectionState.Closed)
{
baglanti.Open();
}
OleDbCommand komut = new OleDbCommand("insert into ogrenci(no, ad, soyad, yas) values(@no,@ad,@soyad,@yas)", baglanti);
komut.Parameters.Add("@no", OleDbType.Integer).Value = Convert.ToInt32(notext.Text);
komut.Parameters.Add("@ad", OleDbType.VarChar,50).Value = Convert.ToInt32(adtext.Text);
komut.Parameters.Add("@soyad", OleDbType.VarChar, 50).Value = Convert.ToInt32(soyadtext.Text);

komut.Parameters.Add("@yas", OleDbType.Integer).Value = Convert.ToInt32(yastext.Text);


komut.ExecuteNonQuery();
baglanti.Close();
sonuc.Text = "Kayıt Tamamlandı.";

Çok teşekkür ederim ama ben kodu anlamadım. Anlamam önemli yaptığımı anlatacam çünkü veritabanım ve design kısmım aşağıdaki gibi.

https://store.donanimhaber.com/9e/ec/00/9eec00ca31d69f06df182878151e5e51.jpg
https://store.donanimhaber.com/3e/d7/e4/3ed7e4ee3909b0935235d3b6e0ea1339.jpg
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >




N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
quote:

Orijinalden alıntı: Kaygerya

Normal yazilim mantiginda hata tutmak cok onemlidir. Bu islemde ne yaparsaniz yapin sonuc islem basarili donecektir.
Try blogu icine kodlarinizi yazip basarili mesaji verin catch durumunda gelen parametreleri loglayin ve islemin basarili olmadigi mesajini verin ve finally blogunda da baglantinizi kapatip isi bitirin.

Teşekkür ederim. Ama benim yazdığım kod başarılı dönüt vermiyor ki. Alanlara veri girdiğim zaman başlıktaki hatayı alıyorum. Sürekli alıyorum ayrıca try catch bi işime yaramaz catch deki mesajı alırım sürekli. Ben alanlara girdiğim verilerin veritabanıma kaydolmasını istiyorum.


Bu mesaja 1 cevap geldi.

P projeyazilim
8 yıl (213 mesaj)
Kaygerya ;
Normalization kurallarına göre ve yazılım standartları na göre haklı aslında daha çok n-tier arc. şeklinde düşünüp validation sınıflarından tutun hata sınıflarıan kadar oluşturulmalı .

nefarkeder23 ;

kodun yaptığı şey sadece ilgili sql satırına parametre eklemek bunu ekler iken database deki tablodaki tipine göre işlem yaparak ekliyor ayrıca bağlanti cümlen if şartı database ile bağantının sağlanması durumunda bağlantının açıkmı kapalımı olduğunu kontrol ediyor.




Bu mesajda bahsedilenler: @nefarkeder23

T Thook
8 yıl (288 mesaj)
no ve yas sayı olduğundan tek tırnak ekleme.

values(" + no + ",'" + ad + "','" + soyad + "'," + yas + ")", baglanti);




Bu mesajda bahsedilenler: @nefarkeder23

N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
quote:

Orijinalden alıntı: projeyazilim


Kaygerya ;
Normalization kurallarına göre ve yazılım standartları na göre haklı aslında daha çok n-tier arc. şeklinde düşünüp validation sınıflarından tutun hata sınıflarıan kadar oluşturulmalı .

nefarkeder23 ;

kodun yaptığı şey sadece ilgili sql satırına parametre eklemek bunu ekler iken database deki tablodaki tipine göre işlem yaparak ekliyor ayrıca bağlanti cümlen if şartı database ile bağantının sağlanması durumunda bağlantının açıkmı kapalımı olduğunu kontrol ediyor.

Teşekkür ederim. Sizin verdiğiniz kodla yazdım ama sonuç değişmedi
https://store.donanimhaber.com/52/79/04/527904d8e2ffac7fbc93f064d693538c.jpg
< Resime gitmek için tıklayın >




N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
quote:

Orijinalden alıntı: Thook

no ve yas sayı olduğundan tek tırnak ekleme.

values(" + no + ",'" + ad + "','" + soyad + "'," + yas + ")", baglanti);

Teşekkürler. Ama sonuç değişmedi.




N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
Ben hala bu sorunumu çözemedim. Yokmu tavsiyesi olan?




C ctn48
8 yıl (172 mesaj)
textboxlarda tek tırnak varsa onu çift yap veya kodla yaptır syntax error ondan olabilir




N nefarkeder23 Konu Sahibi
8 yıl (198 mesaj)
Nasıl yani anlamadım. Zahmet olmasa biraz detaylı anlatırmısınız.




Bu mesajda bahsedilenler: @ctn48
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.