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;

Java jFrame Form Ekleme

Yayınlandı: Ocak 11, 2013 / Java

Öncelikle oluşturduğumuz package’a sağ tık yapıp New>JFrame Form ‘u seçiyoruz.
1
Class name ‘e formumuza vereceğimiz ismi yazıyoruz.Netbeans otomatik olarak NewJFrame olarak vermiş.
2
Ve formumuzu olusturduk.Sol üstte gördüğünüz Source formumuza ait kodların olduğu kısım.Design ise görsel kısmıdır.Sağ kısımda Palette adı altında button, table, combobox vs. gibi görsel araçları görebilirsiniz.
3