Şimdi Ara

Java'da database'den satır sildikten sonra frame i güncelleme ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
5
Cevap
0
Favori
731
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  •  
    try{
    rs.deleteRow();
    st.close();
    rs.close();

    st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql = "select * from Table1";
    rs = st.executeQuery(sql);
    rs.next();
    t.setText(rs.getString("Fname"));
    t1.setText(rs.getString("Lname"));
    t2.setText(rs.getString("Age"));


    }catch(Exception ex){

    }


    javada butonuma bu kodu ekledim. Kod çalışıyor. databaseden satırı siliyor fakat sildikten sonra framedeki üç adet textfield güncellenmiyor. Programı yeniden açtıgımda güncelleniyor ancak. Programı tekrar açmadan yapmanın bir yolu varmıdır acaba ? Yardımlar için şimdiden teşekkürler.



    < Bu mesaj bu kişi tarafından değiştirildi motorix25 -- 13 Temmuz 2012; 15:53:29 >



  • Merhaba;
    try { ... } catch yapısı, bir hata oluşturana kadar kodları satır satır çalıştırır. ancak bir satırda hata oldugunda try in içindeki kod bloğunu çaliştirmayı bırakıp
    catch (Exception e) { ... } li kısma geçer.

    Eğer uygulamanız istediğiniz gibi çalışmıyorsa, fakat herhangi bir hatada döndürmüyorsa, bunun sebebi [%90] bir exception fırlatıldığında, yapılacak hiçbirşey belirtilmemiş olmasıdır.

    kodunuzu şu şekilde değiştirir misiniz ?
     
    try
    {
    // burda değişiklik yok
    ...
    ...
    ...
    } catch (Exception e)
    {
    // printStackTrace() methodu, bir Exception fırlatıldığında, Size çok detaylı bir çıktı sunar.
    e.printStackTrace();
    }


    Bu değişiklik sonucu, bir hata mesajı ile karşılaşıyor musunuz?

    bunun dışında frame e repaint(), invalidate() falan çekmeyide deneyin bi :)



    < Bu mesaj bu kişi tarafından değiştirildi ecivas -- 14 Temmuz 2012; 11:01:34 >
  • Öncelikle cevabınız için çok teşekkür ederim. Bugünlerde pek fazla yardım edecek kimseyi bulamıyorum :).

    Söylediğiniz gibi ex.printStackTrace(); satırını catch bloguna ekledim. ResultSet i close ederken exception fırlatıyomuş. Ben de st.close() ile rs.close(); un yerleini değiştirdim problem halloldu. Demekki statement ı kapatmadan önce resultseti kapatmak gerekiyomuş. Mantığını anlamadım ama :D. Bir de neden böyle olduğunu anlatırsanız sevinirim. Tekrar çok teşekkür ederim yardımınız için.
  • resultset & exception arasında şöyle bir durum sözkonusu olabilir belki; [ki bundan kesinlikle emin değilim]
    mesela bir "select * from hede" sorgusu çalıştırdınız ve atıyorum 123.456.789 sonuç döndü. ve tablonuzda 22 kolon veri var.
    bu durumda zaten bütün herşeyi resultset objesinde tutmayacaktır. siz rs.next dediğiniz zamanlarda 10 ar 10 ar belki 100er 100er java sizin statement ınızı tekrar kullanbilir verilerin gerisini çekmek için

    belki bu yüzden resultsetle işiniz bitene kadar statement ı kapatmamanız gerekebilir.
    birde, try - catch ile birlikte kullanılan finally diye bir bölüm daha var. bu finally sizin try içine yazdığınız kod hatasız çalışınca veya bir yerde hata oldu catch { } bölümüne düştü; [farkmetmez iki durumdada] en son çalıştırılacak kodları belirtmenizi sağlayan bir bölümdür.

    veritabanınında işlemlerinizi yaptıktan sonra rs yada statementl objelerini finally de kapatmanız daha uygun olur diye düşünüyorum, çünkü şöyle bir durumla karşılaşabilirsiniz;

     
    Statement s;
    ResultSet rs;
    try
    {
    String sql = "selekt from asd";
    s = con.createStatement();
    rs = s.executeQuery(sql);

    rs.next();
    String x = rs.getString(1);
    rs.close();
    s.close();
    } catch (Exception e) { e.printStackTrace(); }


    şimdi burdaki sorgu cümlesi yanlış olduğu için, muhtemelen statement çaliştirilip, resultset e sonuç atılmayacak
    resultsetten veri almaya çalişincada uygulama exception firlaticak try blogundan catch bloguna geçicek.

    ee ? rs.close(); s.close() çaliştirilmayacak?


    işte bu durumlar için try - catch - finally kullanılması tavsiye edilir.

     
    Statement s;
    ResultSet rs;
    try
    {
    String sql = "selekt from asd";
    s = con.createStatement();
    rs = s.executeQuery(sql);

    rs.next();
    String x = rs.getString(1);
    } catch (Exception e) { e.printStackTrace(); }
    finally
    {
    rs.close();
    s.close();
    }




  • çok teşekkürler
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.