Ocak, 2013 için arşiv

Java Try Catch Yapısı

Yayınlandı: Ocak 30, 2013 / Java
Etiketler:, ,

Çalışma zamanında herhangi bir hata oluştuğunda yapılacak işlemleri belirlememizi sağlar.SQL ifadelerinde çokça kullanılır.

Örneğin;

package trycatch;

public class Main {

public static void main(String[] args) {

try {

int a = 42 / 0;

} catch (Exception Hata) {

System.out.print(” Hata oluştu :” + Hata);

}
}
}

Javada kullanabileceğiniz bazı matematiksel fonksiyonlar:Java Matematiksel Fonksiyonlar

Textfield’den kullanıcı veri girerek sql tablomuzda nasıl yeni satır oluşturacağımızın kodlarını vereceğim:
1

Önce textfieldlerimizi oluşturalım ve bir tane buton ekleyelim. Daha sonra javayla SQL baglantimizi yapalım. ve ekleyeceğimiz tabloyu statement ile select yapalım.

personellerSonucKumesi = st.executeQuery(“SELECT * FROM  personeller”);

Ekle butonuna 2 kere tıkladığımız java kullanıcı butona tıkladığında neler yapılacağını yazacağımız kısmı açacaktır. ve kodlar:

//Adi, Soyadi, DogumTarihi, Gorevi sql’deki tablomuzda bulunun kolonların ismidir. 

//moveToInsertRow() ile javaya yeni kayıt ekleyeceğimizi söylüyoruz.

//personellerSonucKumesi.updateString(“Adi”,adTextField.getText()); ile

// “Adi” kolonuna oluşturduğumuz adTextField ‘den kullanıcının yazdığı kayıdı alarak eklemesini söylüyoruz.

private void ekleButonActionPerformed(java.awt.event.ActionEvent evt) {
try{
personellerSonucKumesi.moveToInsertRow();
personellerSonucKumesi.updateString(“Adi”,adTextField.getText());
personellerSonucKumesi.updateString(“Soyadi”,soyadTextField.getText());
personellerSonucKumesi.updateString(“DogumTarihi”,yasTextField.getText());
personellerSonucKumesi.updateString(“Gorevi”,goreviTextField.getText());
personellerSonucKumesi.updateString(“TelefonNumarasi”,telnoTextField.getText());
personellerSonucKumesi.insertRow();
JOptionPane.showMessageDialog(rootPane, “Yeni Kayit Eklendi”);

}catch(SQLException ex){
JOptionPane.showConfirmDialog(null, “Kayıt Eklenemedi”, “Kişiler Tablosu”, JOptionPane.PLAIN_MESSAGE);
}
}

Bir önceki yazıda Combobox’a seçenek eklemeyi göstermiştim. Şimdi ise bu seçenekleri direk sql’den alması için gereken kodları göstereceğim.

 

//Burada baglantiAc() fonksiyonu ile statement oluşturmayı java ile sql’e bağlanma yazısında göstermiştim.

//personelSonucKumesi = st.executeQuery(“SELECT Adi FROM personeller”); ile sql’e personeller tablosundan sadece isim sütununu çekmesini söylüyoruz. Daha sonra personelComboYaz() fonksiyonunu çağırarak çektiğimiz verileri combobox’a yazdırıyoruz.Bu fonksiyon :

while(personelSonucKumesi.next()){
personelCombo.addItem(personelSonucKumesi.getString(“Adi”));
}

While döngüsüyle personelSonucKumesi’nde tüm verileri alana kadar devam ettiriyoruz.

personelSonucKumesi.getString(“Adi”) ile bu verilerden Adi sütunundaki satırları tek tek çekiyoruz.

 

 

public Statement baglantiAc() throws Exception{
Class.forName(driver).newInstance();
baglayici = DriverManager.getConnection(url, userName, password);
return baglayici.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
}
public NewJFrame(){
this.ataPencere = ata;
initComponents();
Statement st = null;

try {
st = baglantiAc(); //veritabanına bağlanılıyor
} catch (Exception ex) {
JOptionPane.showConfirmDialog(null, “Bağlantı Başarısız”, “MySQL Bağlantısı”, JOptionPane.PLAIN_MESSAGE);
}
try{
personelSonucKumesi = st.executeQuery(“SELECT Adi FROM personeller”);
personelComboYaz();
}catch(Exception ex){

}
}

public void personelComboYaz(){
try {
while(personelSonucKumesi.next()){
personelCombo.addItem(personelSonucKumesi.getString(“Adi”));
}
} catch (SQLException ex) {
Logger.getLogger(AIsEkle.class.getName()).log(Level.SEVERE, null, ex);
}
}

Bir combobox oluşturduk ve aşağıdaki gibi içinden kullanıcının herhangi bir veriyi seçmesini istiyorsak:1

public NewJFrame() {
initComponents();
jComboBox1.addItem(“Seçenek1”);
jComboBox1.addItem(“Seçenek2”);
jComboBox1.addItem(“Seçenek3”);
}

//jComboBox1 programda oluşturduğumuz combobox’un adıdır.Seçenek1, Seçenek2, Seçenek3 yazanlar ise combobox’un içine eklediğimiz verilerdir.

 

Veya NetBeans bunun için bize bir kısayol sunmuş: jComboBox1>model>Secenek1,Secenek2 burada ekleyeceğimiz seçeneklerin arasına virgül koyarak yazmalıyız.

2

Forma birden fazla radio button eklediğimizde kullanıcı eklediğimiz bütün buttonları seçebiliyor. Eğer tek seçim yaptırmak istiyorsak şu şekilde kodları eklemeliyiz :

Örneğin 3 tane radio buttonumuz olsun ve kullanıcının sadece 1ini seçerek işlem yapmasını istiyorsak forma bir tane Swing Controls kısmından “buttonGroup1” adında button group ekleyelim. Aynı şekilde 3 tane de “secim1,secim2,secim3” adında radio buttonlar ekleyelim.

1

Bu radio buttonları “buttonGroup1” in içine atalım.

//kodlar

public NewJFrame() {
initComponents();
buttonGroup1.add(secim1);
buttonGroup1.add(secim2);
buttonGroup1.add(secim3);
}

//Bu şekilde yaptığımız kullanıcı aynı anda secim1 buttonuyla secim2 buttonunu aynı anda seçemeyecek. Aralarından sadece 1ini seçebilecek.

 

1Örneğin Formumuzda sql’de bir tablodan ad ve soyad çekeceğiz. 2 tane textfield oluşturalım. adTextField ve soyadTextField olsun. Önceki yazılarda olduğu gibi sql’i javaya bağlayalım ve ResultSet kısmını personellerSonucKumesi yapalım.Daha sonra bir kayitGetir() adında fonksiyon oluşturalım :

 

public void kayitGetir(String yon) {
try {

if (yon.equals(“ileri”)) {
personellerSonucKumesi.next();
} else if (yon.equals(“geri”)) {
personellerSonucKumesi.previous();
} else if (yon.equals(“ilkkayit”)) {
personellerSonucKumesi.first();
} else if (yon.equals(“sonkayit”)) {
personellerSonucKumesi.last();
}
adTextField.setText(personellerSonucKumesi.getString(“Adi”));
soyadTextField.setText(personellerSonucKumesi.getString(“Soyadi”));
} catch (Exception e) {
JOptionPane.showConfirmDialog(null, “Kayıt Mevcut Değil”, “Kişiler Tablosu”, JOptionPane.PLAIN_MESSAGE);
}

}

 

Daha sonra ileri, geri, ilk kayıt ve son kayıt adında butonlar oluşturalım.

private void ileriButonActionPerformed(java.awt.event.ActionEvent evt) {
kayitGetir(“ileri”);
}

private void oncekiButonActionPerformed(java.awt.event.ActionEvent evt) {
kayitGetir(“geri”);
}

private void ilkkayitButonActionPerformed(java.awt.event.ActionEvent evt) {
kayitGetir(“ilkkayit”);
}

private void sonkayitButonActionPerformed(java.awt.event.ActionEvent evt) {
kayitGetir(“sonkayit”);
}

 

Butonlara tıklandığında yapılacakları yazalım. İleri butonuna tıkladığımızda personellerSonucKumesi.next(); çalışacak ve bir sonraki kayıta geçecek. Daha sonra

adTextField.setText(personellerSonucKumesi.getString(“Adi”));
soyadTextField.setText(personellerSonucKumesi.getString(“Soyadi”));

textfieldadı.setText yani textfielde bir text gireceğimizi belli ediyoruz. personellerSonucKumesi.getString(“Adi”) kodlarıyla da sql’den resultset kısmında aldığımız personellerSonucKumesi.getString yani bu sonuçtan bir String al.  getString(“Adi”) bunu yazarakta tablomuzdaki Adi kolonundan bir string çekmiş oluyoruz. Aynı şeyler Soyadi kısmında da geçerlidir. Bir sonraki yazıda çektiğimiz verilerin nasıl değiştireleceğini göstereceğim.

Öncelikle 2. formumuzu oluşturuyoruz. Örneğin 1. formumuzun adı AnaPencere 2.si ise PersonelPenceresi olsun.

Personel Penceresine bu kodu ekliyoruz :

private AnaPencere ataPencere;

public PersonelPenceresi(AnaPencere ata){
this.ataPencere = ata;
initComponents();
}

AnaPenceremize Personel isimli bir buton oluşturuyoruz.2 kere design penceresinde butonun üstüne tıklarsanız sizdeb butona tıklandığında ne yapılacağına dair bilgi girmenizi ister:

private void PersonelActionPerformed(java.awt.event.ActionEvent evt) {
new PersonelPenceresi(this).setVisible(true);
}

Bu şekilde Ana Penceremizde Personel isimli butona tıkladığımızda PersonelPenceresi adlı formumuz açılacaktır.

public void tumuTabloyuYaz(){
ResultSet tumu;
try {
st = baglayici.createStatement();
}
catch (SQLException ex) {
ex.printStackTrace();
}
try {
tumu = st.executeQuery(“select * from sqltabloadi”);
ResultSetMetaData tumudata= tumu.getMetaData();
int j = 0,k;

int kolonsayisi=tumudata.getColumnCount();//Kolon sayisini alir.

//Title leri alır.
for( j=0;j<kolonsayisi;j++) {
kolon[j]=rowdata.getColumnName(j+1);
}
//****************
//Model olusturulumu
jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {},new String [] {}));
//*******************

DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
model.setColumnIdentifiers(kolon);

while(tumu.next()) {
Object[] o=new Object[kolonsayisi];
for(j=0;j<kolonsayisi;j++) {
o[j]=tumu.getObject(j+1);
}
model.addRow(o);//tabloya ekler
}
jTable1.setModel(model);
}
catch (SQLException ex) {
ex.printStackTrace();
}
}

Ek Bilgiler;

Eğer SQL’deki kolonların isimlerini almak istemiyorsanız ” Title’leri alır ” yazan kısmı silerek aşağıdaki gibi diziyi kendi başlıklarınızla oluşturunuz. SQL’deki tablo sayısı kadar oluşturulmalıdır yoksa çalışmaz.

String[] kolon={“Personel Adi”, “Gidilen Şirket”, “Yapılacak İş”,”Tarih”};

//jTable1 tablomuzun adıdır.

Java ile SQL Bağlantısı

Yayınlandı: Ocak 11, 2013 / Java, SQL

1//kodlar:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;

private Connection baglayici = null;
private String url = “jdbc:mysql://localhost:3306/sqldeneme”;//Veritabanımızın urlsi
private String driver = “com.mysql.jdbc.Driver”;
private String userName = “root”; //MySQL kullanıcı adı
private String password = “furkan11”; //MySQL parolası
private ResultSet personellerSonucKumesi;//Verilerin çekildiğinde saklanacağı kısım
private Statement st;//kontrol aracımız

public NewJFrame() {
initComponents();
try {
st = baglantiAc(); //veritabanına bağlanılıyor

} catch (Exception ex) {
//Hata Olusunca Yapilacaklar
JOptionPane.showConfirmDialog(null, “Bağlantı Başarısız”, “MySQL Bağlantısı”, JOptionPane.PLAIN_MESSAGE);
}
}

public Statement baglantiAc() throws Exception{
Class.forName(driver).newInstance();
baglayici = DriverManager.getConnection(url, userName, password);
return baglayici.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
}

Kodlarımızı yazdıktan sonra mysql jdbc driver’ini javadan projemize eklemeliyiz.

ProjemizinAdı>Libraries>Sağ Tık Add Library

2

Ek bilgiler : 

initComponents(); Design kısmında oluşturduğumuz araçların programda çalıştırılmasını sağlar.

JOptionPane ; Ekrana mesaj gönderir.

ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE  > Javadan SQL’de değişik yapabilmeyi sağlar.

ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY > Bu şekilde yazarsak kullanıcı sadece gelen verileri okuyabilir, değişme yapamaz.

Import etmeniz gereklidir.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;