Bir önceki uygulamadan farklı olarak bu örnekte her veritabanı işlemi (seç, ekle, güncelle, sil ) için bağlantıyı açıp kapayacağız ve gerekli tüm SQL kodlarını kendimiz yazacağız. Yazının sonunda ise hangi yaklaşımın daha iyi olduğunu tartışacağız. Hazırlayacağımız uygulamanın pencere görünümü:
Not: Bu makaleyi uygulayabilmeniz için bilgisayarınızda Netbeans ve MySQL’in kurulu olması ve gerekli ayarların yapılmış olması gerekiyor ki bu ayrıntılar birinci yazıda anlatıldı.
Veritabanının Oluşturulması
Birinci örnekte kullandığımız veritabanının aynısını kullanacağız. Veritabanını oluşturmak için gerekli kodları orada bulabilirsiniz. Bu kodları nasıl kullanacağınızı bilmiyorsanız, yine o yazıdaki videoyu izleyiniz.
Eğer birinci örneği bilgisayarınızda uyguladıysanız zaten veritabanınız hazır demektir. Bu kısmı atlayabilirsiniz.
Veritabanına Bağlantı
Bu kısım da birinci yazıdaki ile aynı. Yalnız arada önemli bir fark var. Birinci örnekte baglantıAc() ve baglantıKapat() metodlarını yalnızca bir defa kullanmıştık. Burada ise her veritabanı işlemi için kullanacağız. Zaten bağlantı açma ve kapama işlemlerini birer metod (fonksiyon) haline getirmemizin esas sebebi de bu örnekti.
DBConnection ve myTableModel Sınıfları
Programımız iki sınıftan oluşuyor. Birinci sınıf neredeyse tüm işi yapan ve bu yazıda üzerinde duracağımız DBConnection sınıfı. Diğer sınıf ise myTableModel sınıfı ki aslında tek yaptığı iş veritabanı kayıtlarını yukarıdaki resimde gördüğünüz gibi bir tabloya yazabilmemizi mümkün kılmak. Bu sınıf üzerinde fazla kafa yormanıza gerek yok bence. Java’da neden bu iş için ayrı bir sınıf yazmamız gerektiğini anlayamadım doğrusu. Aynı işi örneğin C# dilinde doğrudan yapabiliyoruz. Neyse…
TabloDoldur() Metodu
Buradaki Tablo ifadesini veritabanındaki tablo ile karıştırmayın. Pencerde kullandığımız görsel tablodan (Jtable nesnesi) bahsediyoruz. Bu metodun işi veritabanındaki kisiler tablosunu olduğu gibi penceremizdeki tabloya aktarmak. Ekleme, silme, güncelleme gibi her işlemden sonra çağırıyoruz ki veritabanındaki değişiklikler penceremize anında yansısın.
public void TabloDoldur() { try { Statement st = baglantiAc(); //Bağlantıyı aç ResultSet res = st.executeQuery("SELECT * FROM kisiler"); //VT'den kayıtları ResultSet'e al myTableModel model = new myTableModel(res); //Tablomuza model oluştur jTable1.setModel(model); //Tabloyu res'teki kayıtlar ile doldur baglantiKapat(); //Bağlantıyı kapat } catch (Exception e) { JOptionPane.showConfirmDialog(null, "Bağlantı Başarısız", "MySQL Bağlantısı", JOptionPane.PLAIN_MESSAGE); } }
Kayıt Ekleme
Bu metod “Ekle” düğmesine tıklandığında çağırılacak ve on anda formdaki bilgileri parametre olarak alacak.
public void KayitEkle(String ad, String soyad, String yas, String cinsiyet) { try { Statement st = baglantiAc(); String sql= "INSERT INTO vt.kisiler (Ad, Soyad, Yas, Cinsiyet) VALUES (" + "'" + ad + "', " + "'" + soyad + "', " + "" + yas + ", " + "" + cinsiyet + ")"; //System.out.println(sql); sorgunun doğru yazıldığından emin olmak için ekrana yazdırabilirsiniz. st.executeUpdate(sql); //sorguyu çalıştır baglantiKapat(); //bağlantıyı kapat TabloDoldur(); //Penceremizdeki tabloyu yeniden doldur (güncelle) }catch (Exception e) { JOptionPane.showConfirmDialog(null, "Kayıt Eklenemedi", "Kisiler Tablosu", JOptionPane.PLAIN_MESSAGE); } }
“Ekle” düğmesine basıldığında çalışacak olan metod ise şöyle:
private void ekleButtonActionPerformed(java.awt.event.ActionEvent evt) { String ad = AdTextField.getText(); String soyad = soyadTextField.getText(); String yas = yasTextField.getText(); String cinsiyet; if (cinsiyetComboBox.getSelectedIndex() == 0) { cinsiyet = "0"; } else { cinsiyet = "1"; } KayitEkle(ad, soyad, yas, cinsiyet); }
Kayıt Silme
Bu metod “Sil” düğmesine tıklandığında çağırılacak ve on anda tablod seçili olan satır silinecek. Bu metod parametre olarak silinecek kaydın ID‘sini alıyor. ID bilgisi pencere tablosunda görünmüyor çünkü tablo ikinci kolondan itibaren bilgileri gösteriyor. Bunu myTableModel isimli sınıfta öyle kodladık çünkü.
public void KayitSil(String ID) { try { Statement st = baglantiAc(); st.executeUpdate("Delete FROM kisiler where id=" + ID); baglantiKapat(); //bağlantıyı kapat TabloDoldur(); //Penceremizdeki tabloyu yeniden doldur (güncelle) } catch (Exception e) { JOptionPane.showConfirmDialog(null, "Kayıt Silinemedi", "Kişiler Tablosu", JOptionPane.PLAIN_MESSAGE); } }
“Sil” düğmesine basıldığında çalışacak olan metod:
private void silButtonActionPerformed(java.awt.event.ActionEvent evt) { String ID = jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString(); KayitSil(ID); }
Kayıt Güncelleme
Güncelleme ekleme ve silmenin bir bileşimi gibi aslında. Hem güncellecenek tüm alanları hem de güncellecenek kaydın ID’sini parametre olarak alıyor.
public void KayitGuncelle(String ID, String ad, String soyad, String yas, String cinsiyet) { try { Statement st = baglantiAc(); String sql = "UPDATE vt.kisiler SET " + "Ad='" + ad + "', " + "Soyad='" + soyad + "', " + "yas=" + yas + ", " + "cinsiyet=" + cinsiyet + " WHERE ID=" + ID ; st.executeUpdate(sql); //sorguyu çalıştır baglantiKapat(); //bağlantıyı kapat TabloDoldur(); //Penceremizdeki tabloyu yeniden doldur (güncelle) } catch (Exception e) { JOptionPane.showConfirmDialog(null, "Kayıt Güncellenemedi", "Kişiler Tablosu", JOptionPane.PLAIN_MESSAGE); } }
“Güncelle” düğmesine basıldığında çalışacak olan metod:
private void guncelleButtonActionPerformed(java.awt.event.ActionEvent evt) { String ID = jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString(); String ad = AdTextField.getText(); String soyad = soyadTextField.getText(); String yas = yasTextField.getText(); String cinsiyet; if (cinsiyetComboBox.getSelectedIndex() == 0) { cinsiyet = "0"; } else { cinsiyet = "1"; } KayitGuncelle(ID, ad, soyad, yas, cinsiyet); }
Tabloda Tıklanan Satırın Bilgilerinin Forma Gelmesi
Tabloda bir satıra tıkladığımızda o satırdaki bilgilerin forma yansıması aşağıdaki olay işleyici metod ile oluyor. Bu metod tabloya ait bir metod ve imleç tablo üzerindeyken fareye her basıldığında çağrılıyor.
private void jTable1MousePressed(java.awt.event.MouseEvent evt) { //Tabloda üzerine tıklanılan satırın bilgilerini ilgili form elemanlarına yazar. AdTextField.setText(jTable1.getValueAt(jTable1.getSelectedRow(), 1).toString()); soyadTextField.setText(jTable1.getValueAt(jTable1.getSelectedRow(), 2).toString()); yasTextField.setText(jTable1.getValueAt(jTable1.getSelectedRow(), 3).toString()); String cinsiyet = jTable1.getValueAt(jTable1.getSelectedRow(), 4).toString(); if (cinsiyet.equals("1")){ cinsiyetComboBox.setSelectedIndex(1); } else{ cinsiyetComboBox.setSelectedIndex(0); } }
Sonuç
Birinci örnekteki yaklaşıma göre bu örneğin iki avantajı var. Birincisi yalnızca gerektiğinde bağlantı açılıyor ve iş bitince hemen kapanıyor. Aynı veritabanını birden fazla uygulama kullanıyorsa, örneğin bir web sitesi veritabanı, veritabanı gereksiz yere meşgul edilmemiş oluyor.
İkincisi ise bu yaklaşım bence daha esnek. SQL kodlarına daha hakim olmamızı sağlıyor.
Dezavantaj olarak ise SQL kodlarını String olarak yazarken sıkça yapılan, zaman ve sabır kaybına neden olan hatalar. Benzer kodları kendiniz yazdığınızda ne demek istediğimi daha iyi anlayacaksınız.
Bir sonraki örnekte aynı yaklaşımı kullanan ama bahsettiğim zaman ve sabır kaybına neden olan hataları daha az yapmamıza olanak veren bir yöntemden bahsedeceğim.
Kodların tamamını NetBeans projesi olarak buradan indirebilirsiniz.
Herkese kolay gelsin
01 Mayıs 2010 at 10:49
Java ile access bağlantısı kurmaya çalışıyorum ama bir tülü veriyi Jlist’e çekemiyorum, bunu nasıl yapabilirim,tablo doldur kodunuza baktım ama myTableModel dediğiniz yapı nedir biraz detay verirmisiniz
02 Mayıs 2010 at 04:22
JTable aslında sadece verinin tablo şeklinde görünmünü sağlıyor. Veriyi tutmuyor. TableModel ise verinin tutulduğu yer. Table, TableModel’deki veriyi görüntülüyor. Aynı şey List ve ListModel yapıları için de geçerli. Bu ipucundan sonra internetten gerekli örnekleri bulabilirsiniz sanırım. Ben de vaktim olduğunda benzer bir örneği siteye ekleyeyim inş.
17 Mayıs 2010 at 04:43
Öncelikle yazılarınız için teşekkür ediyorum. Çok faydası oldu. “myTableModel” sınıfına hangi kütüphaneden ulaşabiliriz. Veritabanından aldığım verileri diğer tablemodel’lerle tabloya atmaya çalıştım ancak beceremedim. Yardımcı olursanız veya bu projenin tam halini eklerseniz sevinirim.
17 Mayıs 2010 at 04:44
şimdi fark ettim projeyi sayfanın altına eklemişsiniz. iyi çalışmalar.
16 Temmuz 2010 at 05:15
merhabalar,
sitenizi takip ediyorum,gerçekten de faydalı..
ben veritabanındaki kayıtları tabloda göstermek istiyorum,sizin örnek benzer ama jtable’ın özelliklerini değiştirdiniz mi?
ben örnek olsun diye sizin örneği kndim yapmaya çalıştım ama MyTableModel diye bişey var,onu nasıl oluşturabiliriz,onun hakkında biraz anlatırsanız çok sevinirim,projemi yapmam için gerekli
teşşkurler..
16 Temmuz 2010 at 06:40
MyTableModel sınıfı zaten proje dosyalarının arasında var. Olduğu gibi kullanmanız yeterli. Java’da TableModel sınıfı içerisinde tablonun verisi tutulur. Jtable sınıfı ise yalnızca TableModel sınıfının barındırdığı veriyi göstermekle sorumludur. Yani veri JTable’da değil TableModel’de tutulur. Eğer Tablonuza farklı özellikler katmak istiyorsanız bu iki sınıfı biraz çalışmanız gerekiyor. Ben de vaktim müsait olduğunda Swing classlarına dair bir kaç yazı hazırlmayı düşünüyorum.
16 Temmuz 2010 at 06:32
bir de sizin projenizinizin projects kısmında default package ın içinde vt.properties var,
bn de o yok,kendiliğinden mi oluşması gerekiyor onun yoksa biz mi oluşturacağiz,bnm projem veritabanına baglanıyor ama kayıt eklenmedi diye bir uyarı alıyorum,sizce sebebi nedir?
2 gündür bununla uğraşıyrm,yardım lütfen..
16 Temmuz 2010 at 07:02
Sizin oluşturmanız lazım o dosyayı. Benim projeden kopyalayabilirsiniz. Program bağlantı bilgilerini oradan okuyor. Dosyada ilgili kısımları değiştirmeniz gerekiyor:
Database.url = jdbc:mysql://localhost:3306/
Database.name = [veritabanınızın ismi buraya]
Database.driver = com.mysql.jdbc.Driver
Database.userName = [kulanıcı adı buraya – büyük ihtimal ile root]
Database.password = [şifre buraya – varsayılan olarak boş]
16 Temmuz 2010 at 07:43
Teşekkürler cvp için..MyTableModel sınıfını olduğu gibi aldım,şuan herşey tamam,bir de vt.properties kısmı da tamam,yani veritabanına sorunsuz bir şekilde bağlanıyorum,ama kayıt eklenemedi diye bir sorunla karşılaşıyorum hala..
16 Temmuz 2010 at 07:48
kayıt ekle metodunda böyle bir dğişiklik yapmıştım.’tablogoster’ bnm veri tabanı ismi,ordaki (+) ve (“)işaretlerinde sorun yok sanırım..biraz kafamı karıştırdı da.
String sql = “INSERT INTO tablogoster.musteriler (hesapismi, bireyselmusteri) VALUES (” + “‘” + hesapismi + “‘, ” + “‘” + bireyselmusteri + “)”;
16 Temmuz 2010 at 12:02
internette sizden başka bu konuyu anlatan kimse yok,çok yardımcı oluyrsunuz,çok teşekkür ederim,projemi tamamlamam gerekiyor,msn kullanıyorsanız eklerseniz size tam olarak nerde takıldığımı söyleyeceğim..tekrar teşekkur ederim
17 Temmuz 2010 at 06:16
Cevap için çok teşkkur ederim,dediğiniz videoyu izledim,SQL komutlarını netbeanste system.out.println ile yazdırdım,output ekranına yazdığı halde bnm yaptığım tabloda kayıt eklenmedi uyarısı alıyorum hala..Jtable1 üzerine sağ tıkladığımızda table contents var..columns kısmında type olarak object seçili,acaba onla alakalı bişey mi?
yani string falan yapmıyacakmıyım?
20 Temmuz 2010 at 06:16
merhabalar,
en son başlığınız olan
“Tabloda Tıklanan Satırın Bilgilerinin Forma Gelmesi”
kodunu yazdım çalışmadı..sorun ne olabilir?
08 Eylül 2010 at 09:23
Merhabalar.Paylaşımlarınız çok güzel.Benimde bir problemim var ve paylaşmak istedim.JTable ile ilgili.Eclipse kullanıyorum ve jtable nesnesini sürükle bırak mantıgıyla forma ekledim. veritabanımdan çektiğim bilgileri JTable a aktarmak istiyorum.ButonClick eventımın arkasında şimdiye kadar ResultSet oluşturmaya kadar geldim.Yani şuan sadece ResultSet nesnesini TableModel a aktardıktan sonra(yazdıklarınızdan öyle anladım),TableModel dan da jTable aktarıp görüntülemek istiyorum.Vektör ile alakalı hiç bir şey oluşturmadım ki gerek varmı bilmiyorum.Yani butonumun arkasında standart baglantı kodları var.
Yardımınız için şimdiden teşekkürler.
08 Eylül 2010 at 15:01
Vektörü sanırım kendi tablemodel sınıfımızda kullanmıştık. O sınıfı olduğu gibi kullanmanızı tavsiye ederim JTable ile birlikte. Sorunsuz çalışacaktır. Java’da JTable, JList gibi swing bileşenlerinin bir de jTableModel, JListModel gibi model sınıfları var. Bunun nedeni veriyi tutan (model) ve veriyi gösteren (view) sınıfları birbirinden ayırmak ki buna MVC mimarisi diyoruz ve ayrı bir makale konusu inşaallah.
03 Ağustos 2011 at 07:59
Ben swing ile buna benzer bir veritabanı oluşturmaya çalışıyorum jtable oluşturdum sizin myTableModel sınıfınızla verileri de yazdırmayı başardım fakat kolon başlıklarını yazdıramadım acaba bunun için farklı birşey mi yapmam gerekiyor?
25 Ağustos 2011 at 08:28
Merhabalar,
Makalelerinizdeki kodları kendi projeme uyarlamaya çalışıyorum. Bir yere kadar geldim ama karşılaştığım sorunu aşamıyorum.
MyTableModel ile doldurduğum jtable’daki verileri, veritabanından silmeden temizlemek istiyorum. İnternetten pekçok örnek inceledim ama hiçbiri işe yaramadı.
30 Ekim 2011 at 11:15
merhabalar hocam yukarıdaki örneği rnek sınıf kodlarınızla uygularken jtable bir satırı ilk seçimde aşağıdaki alıyorum daha sonraki seçim işlemlerinde bilgileri ilgili textfieldlere aktarılıyor sorun ne olabilir sizce? hata:
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:371)
at java.util.ArrayList.get(ArrayList.java:384)
at myTableModel.getValueAt(myTableModel.java:53)
at javax.swing.JTable.getValueAt(JTable.java:2720)
at girispencere.jTable1MousePressed(girispencere.java:476)
at girispencere.access$1100(girispencere.java:31)
at girispencere$11.mousePressed(girispencere.java:281)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
30 Ekim 2011 at 11:23
sayın hocam aşağıdaki görünüm kodunu kaldırınca
düzeldi neden bu görünümde bu hata oluşuyor sizce
public girispencere() {
initComponents();
//setLookandFeel(UIManager.getSystemLookAndFeelClassName(), this);
TabloDoldur();
}
30 Ekim 2011 at 12:46
sayın hocam java appletleri hakkında bir ders hazırlarsanız benim gibi javaya yeni başlayanlara çok yardımcı olursunuz. Örneğin bu programı bir applete çevirip html sayfasında çalıştırabilir miyiz;?
31 Ekim 2011 at 14:51
sayın hocam sizin örneklere bakarak hazırlamaya çalıştığım programda veritabanı ve tablolar eğer mysql de yoksa program içerisinde oluşturmaya çalışıyorum şu şekilde:
Statement durum;
try {
durum = baglantiAc();
durum.executeUpdate(“CREATE DATABASE IF NOT EXISTS vt”);
durum.executeUpdate(
“CREATE TABLE IF NOT EXISTS Users {”
+ ” uid INT NOT NULL PRIMARY KEY,”
+ ” username VARCHAR(32) NOT NULL,”
+ ” worldid INT NOT NULLm FORIEGN KEY REFERENCES Worlds(worldid),”
+ “CONSTRAINT UserNameWorld UNIQUE (username, World)”
+ “};”);
baglantiKapat();
KayitGetir(“listele”);//veritabanına bağlanılıyor
TabloDoldur();
} catch (Exception ex) {
Logger.getLogger(girispencere.class.getName()).log(Level.SEVERE, null, ex);
}
ama hata veriyor sebebi sizce nedir?
10 Kasım 2011 at 15:12
mrb arkadaşlar hakan arkadaşımız gibi javayı anlatan başka türkçe sayfa var mı?
02 Temmuz 2012 at 04:57
merhabalar..
şimdi bende mysql veri tabanını kullnarak bir program yazmayı düşünüyorum sıkıntı şu;
şimdi yazdığım programın veri tabanıda kullandığımdan dolayı başka bir bilgisayarda bu programı çalıştıracam zaman veri tabanını da nasıl taşayacam yada yazdığım programın sorunsuzca başka bi bilgisayarda çalışması için nasıl bir yol izlemeliyim ?? şimdden teşekkürler
02 Temmuz 2012 at 08:00
mysql yerine sqlite gibi sunucu gerektirmeyen sadece dosyada ibaret olan bir veritabanı kullanmanız gerekiyor.
03 Temmuz 2012 at 05:46
merhaba,
ekle butonuna kod eklediğimizde,örneğin AdTextField.getText(); kodu yazdığımda sınıf açmam isteniyo hem text field hemde gettext için neden class gerekli?
03 Temmuz 2012 at 06:23
aldığınız hata mesajını tam olarak yazar mısınız?
05 Temmuz 2012 at 07:49
şimdi mysql veri tabanını kullanarak yazdığım bir programı başka bir bilgisayara taşıyamayacak mıyım?
16 Ağustos 2012 at 15:22
mysql veritabanı kullanarak yazdığın programı her bilgisayar tabi ki taşırsın.
eğer sunucu kullanıyorsan zaten sorun yok, eğer kullanmıyorsan, uygulamanı taşıyacağın bilgisayara da mysql kurmak zorundasın.
16 Ağustos 2012 at 17:19
Doğru ancak merkezi bir sunucu kullanılmayacaksa mysql kullanmaya zaten gerek yok. Programın kurulacağı her bilgisayara bir de mysql sunucusu kurmak verimli bir yok değil. Böyle programlar için dahili veritabanı diye adlandırabileceğimiz SQLite veritabanı kullanılabilir. Firefox, open office ve benzeri pek çok uygulama böyle çalışıyor. Microsoft ise aynı iş için SQL compact diye bir veritabanı sunuyor.
09 Aralık 2013 at 08:32
Hocam merhaba çalışmalarınızı dikkatle izliyorum çalışmalarınız ve web den bulduğum örnekler sayesinde kendimce bir stok programı oluşturmaya çalıştım PHPMYADMİN+WAMPSERVER ve NETBEANS aracılığı ile java deskop aplication yaparak bir proje hazırlıyorum netbeans de 2 adet JFRAME mim var PHPMYADMİN’de ise 1 veri tabanım stokkayıtları adında içinde ise 2 adet table bulunmakta JFRAME1 den TABLE1’e stok girişlerini kaydediyorum JFRAME2’den TABLE2’e ise stok çıkışlarını ancak benim yapmak istediğim AN00 ile başlayan stok kodlarım ile girişlerimi tamamladığımda JFRAME2 yi açtığım zaman bir JCOMBOBOX aracılığı ile TABLE1 de bulunan AN00 başlayan stok kodlarımı çağırmak ve üzerine tıkladığımda ise YANİ AN0001 nolu stok ismini comboboxta seçtigimde o stok ile ilgili stok giriş bilgilerinin JTABLE ye gelmesini ve JTABLE’nin altında oluşturduğum textboxlar aracılığı ile stok çıkış bilgilerinin kaydet butonuna bastığım zaman AN0001 koduna kayıt yapmasını istiyorum aynı zamanda JTABLE nin sagında bulunan sütunlarda stok çıkışların gözükmesini istiyorum biraz karışık fakat comboboxtan seçim yaptığımda AN0001 kodunun bilgilerini JTABLEYE aktaramadım bir türlü hocam yardımcı olmanız dileği ile çalışmalarınızda başarılar diler teşekkürlerimi sunarım saygılarımla.
11 Aralık 2013 at 02:55
gerçekten akıcı bir anlatım ve tane tane olması çok anlaşılır kılmıs teşekkürler devamını bekliyorum …
02 Temmuz 2014 at 15:54
Merhaba Harun Kardeş, Hala cevap veriyor musun bilmuyorum. ama ben ilk projede aşmış olduğum türkçe karakter sorununu burada yine yaşıyorum. acaba, bu projede mysql sorgusu göndererek çalıştığım için, farklı bir mantık mı bulmamız gerekiyor.
02 Temmuz 2014 at 23:18
ilk projenin kodunda şöyle bir satır vardı:
private String properties= “?useUnicode=true&characterEncoding=utf8”; //Türkçe karakter problemi yaşamamak için
ikinci projenin koduna eklememişim DBConnection.java içerisine eklemek ve gerekiyor. Ayrıca baglantıAc() metodu içerisinde de:
conn = DriverManager.getConnection(url + dbName + properties, userName, password);
04 Temmuz 2014 at 14:08
ben ilk derste vermiş olduğunuz,
private String properties= “?useUnicode=true&characterEncoding=utf8”;
kullanmıştım, ama yemedi.
ama bu işimi gördü. teşekkürler.
02 Temmuz 2014 at 16:05
MySql Exceptions ile ilgili.
kayıt ya da silme hatası aldığımız zaman, sql bana açıklama gönderiyor.
ama bu açıklamadan, kullanıcıya hitap edecek bir konrol yazmak hayli zor olacaktır.
Sadece ama sadece mysql’in Hata kodunu döndürebileceği bir try cathc mümkün müdür?
02 Temmuz 2014 at 23:24
SQLException sınıfının getErrorCode( ) isimli bir metodu var. catch içerisinde
catch (Exception e) yerine catch (SQLException e) kullanılırsa e.getErrorCode( ) çağırılabilir.
Örnek: http://www.tutorialspoint.com/jdbc/jdbc-exceptions.htm
04 Temmuz 2014 at 13:58
teşşekkür ederim.
10 Ağustos 2014 at 20:28
Sizi keşfetmem muhteşem oldu. Dersler harika, üç uygulamada her örnek için veritabanı oluştur, onu hazırla derdiyle uğraşmaktan kurtarmayı akıl ettiğin için bile ayrıca teşekkürler. Takipteyiz.