none
Güncelleme ve Silme Butonlarındaki Hata RRS feed

  • Soru

  • Güncelleme Butonu : 

    Hata : System.Data.OleDb.OleDbException: 'Syntax error in UPDATE statement.'

    cmd = new OleDbCommand();
                con.Open();
                cmd.Connection = con;
                cmd.CommandText = "update kayitformu set bolge='" + bolgeler.Text + "','" + iller.Text + "','" + mudurluk.Text + "','" + tedarikci.Text + "','" + uretici.Text + "','" + kategoriler.Text + "','" + turler.Text + "','" + tipler.Text + "','" + adlar.Text + "','" + serinolar.Text + "','" + ariza.Text + "' where ogr_no=" + bolgeler.Text + "";
                cmd.ExecuteNonQuery();
                con.Close();
                GridDoldur();

    Silme Butonu

    hata : System.Data.OleDb.OleDbException: 'Syntax error (missing operator) in query expression 'bolge='.'

     cmd = new OleDbCommand();
                con.Open();
                cmd.Connection = con;
                cmd.CommandText = "delete from kayitformu where bolge=" + bolgeler.Text + "";
                cmd.ExecuteNonQuery();
                con.Close();
                GridDoldur();

    İki butonda da hata var . Şimdiden teşekkür ederim . 


    27 Haziran 2018 Çarşamba 06:17

Tüm Yanıtlar

  • İlk hatanda

    update kayitformu set bolge = '" + bolgeler.text+ "' 
    dedikten sonra virgül ile ayırdıktan sonra mutlaka yeni bir kolon adı yazmalısın
     Bu şekilde 
    
    update kayitformu set bolge = '" + bolgeler.text+ "' ,iller ='"+iller.text+"'  
    diğerlerinide bu şekilde bitirmen lazım . 
    

    İkinci hatanda tek tırnak koymayı unutmuşsun . Bir ricam daha uzun commadtext  yazacaksan parametre  kullan ve mümkünse ( " // bu alana kodlarını yaz"); .

    Bir hatırlatma daha operatör hatası diyor ise kullandığın simgelere dikkat etmen gerekir . Syntax error diyor ise yazdığın kodun  yazım şeklinde(syntax) hata var demektir. 


    Altan Özdemir


    27 Haziran 2018 Çarşamba 06:53
  • Parametreyi her zaman kullan , o dönen text değerinin bir sql komutu olmayacağının garantisi yok bu yüzden parametre kullanmalısın.

    Kolay gelsin.

    27 Haziran 2018 Çarşamba 08:38
  • Örnek üzerinden gösterebilir misiniz ? Tam olarak ne demek istediğinizi anlayamadım . 
    27 Haziran 2018 Çarşamba 09:19
  • Örnek üzerinden gösterebilir misiniz ? Tam olarak ne demek istediğinizi anlayamadım . 
    string equery = "INSERT INTO leave (UserId, leaveType, fromDate, toDate, numdays, seasonLeave, Reason) VALUES(@UserId, @Type, xx, xx, xx, @seaonleave, @Reason)";
    using (SqlCommand cmd = new SqlCommand(equery, con))
       {
       cmd.Parameters.AddWithValue("@UserId", myUserId);
       cmd.Parameters.AddWithValue("@Type", leavetype.Text);
       ... // Şeklinde devam edeceksin.
       }
    

    SQL cümlende kolonları ve onlara karşılık gelen parametreleri başına @ yazarak belirleyip sonra 

    cmd.Parameters.AddwithValue("Parametre",Senin yazmak istediğin değer);

    Şeklinde kullanabilirsin.

    Using de kullanmalısın bağlantıyı ve diğer sqlcommand ı oluştururken , sebebide bellekte kullanmak için yer açtığın bu nesneleri kullandıktan sonra bellekten atman gerektiği için.

    Ve eğer access kullanıyorsan hiç beklemeden , sqlite ,mssql ,postgre vb. bir database e geçiş yap.


    27 Haziran 2018 Çarşamba 09:35
  • Teşekkür ederim. İyi çalışmalar 
    28 Haziran 2018 Perşembe 07:13