veri tabanı işleminde nokta virgül hatası [Güncel]

C# (C Sharp) veya Java ile ilgili konuları buraya yazabilirsiniz.
Cevapla
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

veri tabanı işleminde nokta virgül hatası [Güncel]

Mesaj gönderen mkysoft »

Veri tabanı işlemleri içiren basit bir program yazdım. Virgüllü sayıları grid üzerinden girdiğimde kayıt düğmesine basıyorum, kural ihlali diye hata veriyor, durduruyor programın çalışmasını. Hata mesajının tamamı altta.
----------------
An unhandled exception of type 'System.Data.DBConcurrencyException' occurred in System.Data.dll
Additional information: Tutarlılık ihlali: UpdateCommand, beklenen 1 kaydın 0 kaydını etkiledi.
---------------------

Veri tabanını açıp elimle virgüllü sayı giriyorum, ekranda sorunsuz gösteriyor, programdan değiştirp kaydetmeye çalışınca yine hata veriyor. Manuel oledataadapter, oledatacommand tanımlarım. parametreleri tanımladım, parameters value olarak girdim verileri. veri tabanına sql i göndermeden kontrol ettiğimde WHERE abc= 1.2 yazması gerekirken WHERE abc=1,2 yazdığını görüyorum. Bundan dolayı hata veriyor galiba. Bu sorunu nasıl çözebilirim?
Teşekküler
En son mkysoft tarafından 19 Kas 2009 08:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: veri tabanı işleminde nokta virgül hatası

Mesaj gönderen sabanakman »

Bildiğim kadarıyla SQL dilinde ondalıklı sayılar sadece nokta ile ifade edilebiliyor. İşin içine virgül karışınca çoklu değer olarak ele alınmaktadır.

Kod: Tümünü seç

select * from tablo where id in (1,2)
gibi. Virgülü noktaya çevirip kullanmak reel sayı kullanımına çözüm olacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: veri tabanı işleminde nokta virgül hatası

Mesaj gönderen mkysoft »

teşekkürler @sabanakman, bunu bende biliyorum ancak bu dönüşümü tıpkı delphideki gibi C#'ın datatable nesnesi yapmalı, ben neden uğraşayımki? Ben sonuçta SQL 'i text olarak göndermiyorum, parameters ile parametreleri belirtiyorum, gerisi dil'e kalmalı. Bir kaç yere daha sordum, bir kaç telefon görüşmesi yaptım. Telefondakilerden biri, çevirimi kendimin yapmam gerektiğini söyledi. Bununla ben uğraşacaksam C#'ın ne anlamı kalırkı :(
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: veri tabanı işleminde nokta virgül hatası

Mesaj gönderen aslangeri »

s.a.
parametreye değer atamasını nazıl yapıyorsunuz peki?
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: veri tabanı işleminde nokta virgül hatası

Mesaj gönderen mkysoft »

Kod: Tümünü seç

sql.CommandText = "SELECT * FROM TblCaplar WHERE Cap = @Cap AND EtKalinlik = @EtKalinlik";
sql.Parameters.Add("@Cap", OleDbType.Decimal);
sql.Parameters["@Cap"].Value = Convert.ToDouble(Cap);
sql.Parameters.Add("@EtKalinlik", OleDbType.Decimal);
sql.Parameters["@EtKalinlik"].Value = Convert.ToDouble(EtKalinlik);
OleDbDataAdapter Sda = new OleDbDataAdapter();
Sda.SelectCommand = sql;
Sda = sql.ExecuteReader();
Aynı sorun direk datagride bağladım ve grid üzerinden veri girdiğim standart bir tablo içinde hataya neden oluyor. Aklıma kullandığım sürüceden kaynaklanabileceği geldi.

Kod: Tümünü seç

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Tanimlar.mdb
jet oledb kullanıyorum.
teşekkürler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: veri tabanı işleminde nokta virgül hatası

Mesaj gönderen aslangeri »

sql.Parameters["@EtKalinlik"].Value = Convert.ToDouble(EtKalinlik);
"EtKalinlik" ın tipi nedir nerde tanımlamıştır?
eğer string ise convert ederken IFormatprovider tanımlarsan "." - "," işini halledebilirsin gibime geliyor.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: veri tabanı işleminde nokta virgül hatası

Mesaj gönderen mkysoft »

Object tipinde tanımlamışım:

Kod: Tümünü seç

object EtKalinlik = GrdSiparisler.Rows[i].Cells["EtKalinlik"].Value;
Bu değeri stringe çevirip tabiki virgülden den noktaya dönüşüm yapabilirim, datagridleri ne yapacağım?
Telefona bilgi aldığım kişi, dataadapterların post işlermine müdehale edip düzeltmeleri genel hale getirebileceğimi söyledi. Bu hata ile ilk karşılaşan ben miyim, anlamadım.
Cevapla