24 Şubat 2012 Cuma

JAVA DA İŞLEM EHEMMİYETİ İÇİN EVET- HAYIR PENCERESİ

Geçenlerde JDBC uygulaması yaparken programı kullanan kişinin kayıt butonuna bastığında kaydedip kaydetmeyeceğini bir daha sormasını istedim. Yani en basitinden bir Word dokümanı açıp bir şey yazdıktan sonra kapatırken dökümanı kaydedip kaydetmek istemediğimizi sorması gibi bir şey bu dediğim. Neyse ki Java da  JDialog  classı işimi fazlasıyla gördü ve ortaya şöyle bir görüntü çıktı.



Yani anlayacağınız kayıt işleminin yapılıp yapılmayacağı açılan bu pencere de tıklayacağımız butona göre yapılıyor. Hayır dersek kayıt yapmıyorsunuz diye bir uyarı verip evet dersek de belli kontrollerden sonra DB ye şahsı kaydediyor. Neyse lafı fazla uzatmadan kod kısmına geçelim. Bu kodu yazdığınız program da componentin eventine gömeriz.
JOptionPane pane=new JOptionPane(tsicil.getText()+" sicil nolu "+tad.getText()+" "+tsoyad.getText()+" adlı kişiyi kaydetmek istiyor musunuz?");
                Object[] secenkler = new String[] { "Evet", "Hayır" };
                pane.setOptions(secenkler);
                JDialog dialog=pane.createDialog(new JFrame(),"");
                dialog.setVisible(true);
                int sonuc=-1;
                Object object=pane.getValue();
                for (int i = 0; i < secenkler.length; i++) {
                    if(secenkler[i].equals(object))
                    {
                        sonuc=i;
                    }
                }
                if(sonuc==1)
                {
                    JOptionPane.showMessageDialog(null, "Kaydetmek istemiyorsunuz!");
                }


17 Şubat 2012 Cuma

JAVA DA FRAME ICONUNU DEĞİŞTİRMEK

Yaptığımız grafik arayüzlü uygulamalar da (GUI), programın çıktısı hep java iconu ile gelir. Java nın meşhur kahve iconu. Bazen istediğiniz bir resmi icon olarak kullanabilirsiniz. Nitekim Java bize bu fırsatı da vermiş. Aşağıda ki kod ile frame iconunu değiştirebiliriz.


BufferedImage image=null;
       
        try {
            image=ImageIO.read(o.getClass().getResource("/resim/linux.png"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        frame.setIconImage(image);

kod parçasını bizim blog da kullandığımız main metodunun içerisine gömerseniz iconun değişmiş olduğunu sizde görebileceksiniz. İyi çalışmalar...

16 Şubat 2012 Perşembe

JAVA DATABASE PROGRAMMING-3

Kullanıdığımız veritabanı hakkında bilgi almak için DatabaseMetaData classını kullanırız. Aşağıda ki örnek kod benim bilgisayarımda kurulu olan veritabanı hakkında bilgiler vermektedir.

package metadatakavrami;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;

public class MetaDataKavrami {
    public static void main(String[] args) {
        Connection connection;
        try {
            String drivername="oracle.jdbc.driver.OracleDriver";
            Class.forName(drivername);
            String serverName="127.0.0.1";
            String portNumber="1521";
            String sid="XE";
            String username="PERSONEL";
            String parola="PERSONEL";
            String url="jdbc:oracle:thin:@"+serverName+":"+portNumber+":"+sid;
            connection=DriverManager.getConnection(url,username,parola);
            System.out.println("Veritabanına bağlanıldı.");
            System.out.println("----------DATABASE INFORMATION----------\n");
            DatabaseMetaData meta=connection.getMetaData();
            System.out.println("Veritabanu url:"+meta.getURL());
            System.out.println("veritabanı ürünümüzün adı:"+meta.getDatabaseProductName());
            System.out.println("Veritabanı versiyonu:"+meta.getDatabaseProductVersion());
            System.out.println("JDBC sürücüsünün adı:"+meta.getDriverName());
            System.out.println("JDBC sürücüsünün versiyonu:"+meta.getDriverVersion());
            System.out.println("JDBC ana sürücü versiyonu:"+meta.getDatabaseMajorVersion());
            System.out.println("JDBC ikincil sürücü versiyonu:"+meta.getDatabaseMinorVersion());
            System.out.println("Maximum bağlantı sayısı:"+meta.getMaxConnections());
            System.out.println("En uzun tablo:"+meta.getMaxTableNameLength());
            System.out.println("En uzun sütun:"+meta.getMaxColumnsInTable());
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Veritabanına bağlanılamadı.");
        }
    }
}

Kodlarımızın ekran çıktısı aşağıda ki gibi olur.


Programın kaynak kodlarını buradan indirebilirsiniz. İyi çalışmalar...


12 Şubat 2012 Pazar

VERİTABANI E-KİTAP

Son iki yazımda Java ile veritabanı bağlantısı üzerinde durmuştum. JDBC yazılarıma bir müddet daha devam edeceğim. Fakat mevzu bahis JDBC olduğu için biraz veritabanı bilmek gerek. Yani basit sorguları,update leri veyahut edit işlemlerini yapabilmemiz gerekir. İşte size Oracle ' ın kendi sitesinden bir SQL kaynağı . Ben de SQL için genel de bu kaynağa başvururum. Size de tavsiyem budur. Kitabı buradan indirebilirsiniz.

8 Şubat 2012 Çarşamba

JAVA DATABASE PROGRAMMING-2

SQL İfadelerini Çalıştırma
SQL de tablo veya veritabanı oluştururken,bir veriyi veya tabloyu silerken ya da güncelleme (update) yaparken kullanacağımız metod ;
            statement.executeUpdate(DDL ifadesi);
Yukarıda saydığım veritabanı işlemleri SQL de DDL (Data Definition Language) işlemleridir.
Eğer bir SQL sorgusu çalıştırmak istiyorsak;
statement.executeQuery(sorgu);
Burada ki sorgu dan kasıt tablodan veri çekmek için yapılan sorgudur.

ResultSet İşleme
Tablodan çekmek istediğimiz verileri görüntülemek istiyorsak resultset nesnesinden yararlanırız. Burada next metodu işimizi görür.
            while(resrutSet.next())
{
            System.out.println(resultSet.getString(first_name)+” ”+…);
}
şeklinde kullanılır. İLk olarak basit bir örnekle başlayalım. Aşağıda ki kodlara bir göz atın isterseniz.

package javadatabaseprogramming.pkg1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JavaDataBaseProgramming1 {
    public static void main(String[] args) {
        Connection connection=null;
       
        try {
            String driverName="oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);
            String servername="127.0.0.1";
            String portNumber="1521";
            String sid="XE";
            String url="jdbc:oracle:thin:@"+servername+":"+portNumber+":"+sid;
            String username="PERSONEL";
            String parola="PERSONEL";
            connection=DriverManager.getConnection(url,username,parola);
            System.out.println("Veritabanına bağlanıldı.");
           
            Statement statement=connection.createStatement();
            ResultSet rs=statement.executeQuery("select employee_id,first_name,last_name,"
                    + "phone_number ,email from personel.employees ");
           
            while(rs.next())
            {
                System.out.println(rs.getString("employee_id")+"  "+rs.getString("first_name")+"       "
                        +rs.getString("last_name")+"       "+
                        rs.getString("phone_number")+"     "+rs.getString("email"));
            }
           
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Veritabanı bağlantısı yapılamadı!");
        }
    }
}
Bu kodları çalıştırmadan önce bir bakın bakalım classes12.jar dosyasını eklemiş misiniz diye. Bu dosyayı Netbeans IDE sinde projenin altında Libraries’e sağ tıklayıp add jar file/folder dan ekleriz. Aksi takdirde program hata verir yani veritabanına bağlanamaz.
Bu kodların ekran çıktısı şu şekilde olur.


Programın kaynak kodlarını buradan indirebilirsiniz. İyi çalışmalar...

JAVA DATABASE PROGRAMMING-1



Java da belli başlı şeyleri artık oturtmuş olmamız gerektiğinin kanısındayım. Artık Java ile veritabanı bilgilerimizi beraber kullanarak daha kapsamlı programlar yazmanın  bence zamanı geldi. Swing bileşenlerini ve veritabanını kullanarak mesela bir telefon defteri ya da sözlük ilh. şeyler yapılabilir. Kullandığımız masaüstü sözlük programlarının hepsi bu tip uygulamalardır. Lafı fazla uzatmadan JDBC’ye geçelim.
JDBC
Öncelikle  şunu belirtmek gerek ki JDBC bir kısaltma değildir, Java  ile veritabanı uygulamaları  geliştirmek için kullanılan bir API (Application Program Interface)’dir. JDBC bize ilişkisel veritabanlarını kullanarak sorgular yapabilir,veri ekleyip silinebilir veya veriler üzerinde güncelleme yapılabilir. Java programları arasında ki ilişkiler ,JDBC API,JDBC sürücüleri ve ilişkisel veritabanları ile alakalı bir resim aşağıda ki gibidir.



ODBC driver Windows sistemi ile birlikte kurulu olarak gelir. Microsoft Access veritabanına ulaşmak için JDBC-ODBC yi kullanabiliriz. JDBC sürücüsü JDK tarafından desteklenir. Şimdi gelgelelim JDBC kullanarak nasıl veritabanı uygulamaları geliştirdiğimize.

Öncelikle bu işin de bir algoritması vardır. Bu algoritmayı verecek olursak;
            -Sürücüleri yükleme
            -Bağlantıları kurma  
            -SQL ifadeleri oluşturma
Algoritmasını uygulamalarımızda izleyeceğiz. Şimdi algoritmanın bu adımlarını teker teker inceleyerek artık yavaş yavaş bağlantıyı kurmaya başlayalım.

1-Sürücüleri Yükleme (Loading Drivers)
Henüz bağlantı yapılmadan , öncelikle uygun bir sürücü yüklenmelidir. Sürücü yükleme olayı şu şekilde olur.
            Class.forName(“JDBCDriverClass”);
Aşağıda ki tabloda JDBC sürücüleri gösterilmektedir.

Database    Driver Class                                        Source
Access                   sun.jdbc.odbc.JdbcOdbcDriver                       JDK destekler
MySQL                  com.mysql.jdbc.Driver                        web sitesine gidilmeli
Oracle                    oracle.jdbc.driver.OracleDriver                       web sitesine gidilmeli

           

Oracle için web sitesi http://www.oracle.com/technetwork/indexes/downloads/index.html  adresinden istenilen sürücülere ve yazılımlara ücretsiz ulaşabilirsiniz.

Ben örneklerim de Oracle veritabanını kullanacağım. Oracle veritabanını kullanmak için classes12.jar dosyasına ihtiyacımız var. Bu dosyayı da demin yukarıda verdiğim linkden indirebilirsiniz. Bu jar dosyasını netbeans ile yaptığımız projelerde projenin altında ki libraries klasörünün içerisine kopyalarız. Böylece sürücü yükleme olayını da bitirmiş oluruz.



2-Bağlantıları Kurma (Establishing connections)
Bir veritabanına bağlanmak için getconnection(databaseURL) metodunu kullanırız. Bu metodun kullanımı aşağıda ki gibidir.
            Connection connection=DriverManager.getConnectio(databaseURL);
Aşağı da ki tabloda  veritabanları ve databaseURL leri yer almaktadır.


Veritabanı                 URL Pattern
Access                   jdbc:odbc:dataSource
MySQL                  jdbc:mysql://hostname/dbname
Oracle                    jdbc:oracle:thin:@hostname:port#:oracleDBSID

Mesela bir Oracle veritabanına bağlanmak için;
            Connection connection=DriverManager.getConnection
(“jdbc:oracle:thin:@”+serverName+”:”+portNumber+”:”+sid);
Parantez içinde ki değerleri hemen vereyim;
serverName=127.0.0.1
portNumber=1521      (Oracle bu porttan yayın yapar)
sid=XE
şeklinde bağlantı kurarız.

3-Sorgu oluşturma (Creating Statements)
connection  nesnesini kullanarak sorgularımızı yaparız.
Statement statement=connection.createStatement();
Önümüzde ki yazımızda ise bu sorguların nasıl çalıştırıldığı üzerinde durup JDBC’ ye devam edeceğiz. İyi çalışmalar…



5 Şubat 2012 Pazar

İLERİ SWİNG BİLEŞENLERİ-3

JList

JList bileşeni pek sık kullanılan bir bileşen değildir. Ama bazen de kullanmak hem görüntü hem de kullanışlılık bakımından işe yarar bir bileşendir.  Listede ki verilerin dizilişlerini istediğimiz şekilde ayarlayabiliriz. Nitekim;
JList.VERTICAL : Verile dikey dizilirler.
JList.HORIZONTAL_WRAP:Pencerenin uzunluğuna göre yatay olarak dizilirler. En sağa gelindiği zaman bir alt satıra geçilir.
JList.VERTICAL_WRAP: İstenilen sütun sayısı kadar dikey olarak liste elemanları satır-sütun şeklinde dizilirler.
Liste elemanlarını aşağıda ki metod ile oluşturabiliriz;
setListData(listData: Object[]): void
Listeden eleman seçmenin 3 tane yöntemi vardır. Bunlar; SINGLE_SELECTION,SINGLE_INTERVAL_SELECTION,MULTIPLE_INTERVAL_SELECTION,MULTIPLE_INTERVAL_SELECTION değerleridir. Bunlar int tipinde değerlerdir.
SINGLE_SELECTION listeden sadece tek eleman seçmemize izin verir. SINGLE_INTERVAL_SELECTION çoklu seçime müsade eder fakat seçilecek bu elemanların bitişik eleman olması icab eder. MULTIPLE_INTERVAL_SELECTION istediğimiz gibi çoklu seçim yapmamıza müsade eder. Mevzu ile alakalı basit bir programın kodları aşağıda ki gibidir.



package jlistdemoblog;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListSelectionModel;

public class olay extends JFrame {
   
    JList liste=new JList();
    JButton kopyala=new JButton("COPY>>");
    JList liste2=new JList();
    JLabel label=new JLabel(">>>");
    Object [] sehirler={"İstanbul","Malatya","Erzurum","Trabzon","Tokat","Elazığ","Sivas"};
   
    public olay()
    {
        super("Liste uygulaması");
        liste.setListData(sehirler);
        liste.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        setLayout(new BorderLayout());
        final JPanel p=new JPanel();
        add(p,BorderLayout.CENTER);
        p.setLayout(new FlowLayout());
        p.add(liste);
        p.add(label);
       
        add(kopyala,BorderLayout.SOUTH);
        kopyala.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                p.add(liste2);
                liste2.setListData(liste.getSelectedValues());
                liste2.setForeground(Color.BLUE);
                liste2.setBackground(Color.ORANGE);
            }
        });
    }
}
Programın çıktısı aşağıdaki gibidir.


Kod kaynak dosyalarını ve programın çalıştırılabilir jar dosyasını  buradan indirebilirsiniz.İyi çalışmalar...

2 Şubat 2012 Perşembe

İLERİ SWİNG BİLEŞENLERİ-2

JTabbedPane
JTabbedPane classı ; bir çok bileşeni (component) aynı alanda göstermemizi ve kullanmamızı sağlar. Aşağıda ki resim bir JTabbedPane örneğini teşkil eder.



Anlayacağınız bu bileşene pek yabancı değiliz. Mesela; bir tarayıcıda yeni sekme açmayı örnek verebiliriz. Ya da windowsdan örnek verecek olursak;




Yukarıda ki resimde ok işareti koyduğum yerlerin hepsi birer tab (sekme) dır. Java da eğer tab arayüzünü kullanmak istemiyorsanız cardlayout işinizi görebilir. Ama bu bileşeni kullanmak daha kolaydır.
JTabbePane de oluşturduğumuz tabların üzerlerine ikonlarda yerleştirebiliriz. Bu ise kullanıcının programla daha kolay iletişim kurmasını sağlar.
Bir JTabbedPane oluşturmak için şöyle bir yol izleriz. Öncelikle classımızı import etmek lazımdır.
JTabbedPane tab=new JTabbedPane();
Classımızı tanımladıktan sonra oluşturduğumuz bu tab a paneller ekleriz. Aşağıda ki kod basit bir JTabbedPane örneğidir.


package jtabbedpaneclassdemo;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

/**
 *
 * @author MESUT EMRE
 */
public class olay extends JFrame {
   
    JTabbedPane tab=new JTabbedPane();
    JButton b1=new JButton("1.Tab");
    JButton b2=new JButton("2.Tab");
   
    public olay()
    {
        super("JTabbedPaneDemoClass-Mesut Emre ÇELENK");
       
        add(tab);
        JPanel panel1=new JPanel();
        tab.addTab("Tab1", panel1);
        panel1.setLayout(new FlowLayout());
        panel1.add(b1);
        b1.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               JOptionPane.showMessageDialog(null, "1.Tab'ın butonu.");
            }
        });
        JPanel panel2=new JPanel();
        tab.addTab("Tab2", panel2);
        panel2.setLayout(new FlowLayout());
        panel2.add(b2);
        b2.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "2.Tab'ın butonu.");
            }
        });
    }
}

Programın çıktısı aşağıdaki gibi olur.







Programın kaynak kodlarını ve çalıştırılabilir jar dosyasını buradan indirebilirsiniz.İyi çalışmalar.