Harun Reşit Zafer

bâki kalan bu kubbede bir hoş sadâ imiş

Netbeans, Java, MySQL: Örnek Veritabanı Uygulaması – 2

Netbeans_java_mySQL
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ü:

java_mysql

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

<img class=”alignright size-full wp-image-565″ title=”Netbeans_java_mySQL” src=”http://www.hrzafer.com/wp-content/uploads/2010/01/Netbeans_java_mySQL.jpg” alt=”Netbeans_java_mySQL” width=”166″ height=”198″ />
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPrint this pageEmail this to someone

38 Yorum

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

    • admin

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

  2. AHMET ÇAĞDAŞ SEÇKİN

    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.

  3. AHMET ÇAĞDAŞ SEÇKİN

    17 Mayıs 2010 at 04:44

    şimdi fark ettim projeyi sayfanın altına eklemişsiniz. iyi çalışmalar.

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

    • admin

      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.

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

    • admin

      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ş]

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

  7. 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 + “)”;

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

  9. 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?

  10. 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?

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

    • admin

      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.

  12. 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?

  13. 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ı.

  14. mustafa göksu

    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)

  15. mustafa göksu

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

    }

  16. mustafa göksu

    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;?

  17. mustafa göksu

    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?

  18. mrb arkadaşlar hakan arkadaşımız gibi javayı anlatan başka türkçe sayfa var mı?

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

    • admin

      02 Temmuz 2012 at 08:00

      mysql yerine sqlite gibi sunucu gerektirmeyen sadece dosyada ibaret olan bir veritabanı kullanmanız gerekiyor.

  20. 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?

  21. şimdi mysql veri tabanını kullanarak yazdığım bir programı başka bir bilgisayara taşıyamayacak mıyım?

  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.

    • admin

      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.

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

  24. gerçekten akıcı bir anlatım ve tane tane olması çok anlaşılır kılmıs teşekkürler devamını bekliyorum …

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

    • 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);

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

  26. 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?

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

Bir Cevap Yazın

E-posta adresiniz yayınlanmayacak

*

© 2016 Harun Reşit Zafer

Temayı tasarlayanAnders NorenYukarı ↑