Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4
Cevap
747
Tıklama
0
Öne Çıkarma
Java'da database'den satır sildikten sonra frame i güncelleme ?
M
14 yıl (29 mesaj)
Onbaşı
Konu Sahibi

 
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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

E
14 yıl (163 mesaj)
Teğmen

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 >
Bu mesaja 1 cevap geldi.
M
14 yıl (29 mesaj)
Onbaşı
Konu Sahibi

Ö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.


Bu mesaja 1 cevap geldi.
E
14 yıl (163 mesaj)
Teğmen

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();
}


Bu mesaja 1 cevap geldi.
M
14 yıl (29 mesaj)
Onbaşı
Konu Sahibi

çok teşekkürler



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.