[Java] Jtable‘Da Database‘Den Veri Listeleme
-
Merhaba arkadaşlar,
Bir araç servis otomasyonu yazıyorum veritabanına ekleme çıkarma işlemi tamam fakat bilgileri jtable'da gösteremiyorum.
Yardımcı olabilecek mürid var mı? Teşekkürler.
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.TitledBorder; import javax.swing.UIManager; import java.awt.Color; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.JComboBox; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.DefaultComboBoxModel; public class Servis { private JFrame frmAraServisOtomasyonu; private JTextField txtAd; private JTextField txtSoyad; private JTextField txtTelefon; private JTextField txtMail; private JTextField txtPlaka; private JTextField txtTarih; JTable jtabEmail; Connection baglanti = null; Statement statement=null; ResultSet resultSet=null; String adi, soyadi, mail, adres, bakim, plaka, tarih, ek_sikayet; long telefon; String model; String[] baslik= { "Ad", "Soyad", "Telefon", "Mail Adresi", "Tarih", "Model", "Bakım Türü", "Plaka"}; Object[][] data = { //{"Cenk", "xx", "124", "admin@x.com", "11.12.2014", "2014", "10.000 KM", "34 UU x"} }; public void veriCek(){ //Verıtabanından cıktı alıyoruz. try { resultSet = statement.executeQuery("select * from tablo"); while (resultSet.next()) { System.out.println("id no: " + resultSet.getString("id") + " Adi :" + resultSet.getString("ad") + " Soyadi :" + resultSet.getString("soyad") + " Modeli :" + resultSet.getString("model") + " Bakim :" + resultSet.getString("bakim")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void Veritabani(){ try { //Baglantının ozellıklerını tanımlıyoruz. baglanti = DriverManager.getConnection("jdbc:mysql://localhost:3306/cenk?user=cenkgun&password=1234"); //Statement adında baglantı ifadesi kullanıyoruz. statement=baglanti.createStatement(); //Verıtabanına secılen tabloya ekleme yapıyoruz. statement.execute("insert into tablo (ad, soyad, telefon, mail, adres, model, bakim, plaka, tarih, ek_istek) values ('"+adi+"', '"+soyadi+"', '"+telefon+"', '"+mail+"', '"+adres+"', '"+model+"', '"+bakim+"', '"+plaka+"', '"+tarih+"', '"+ek_sikayet+"') "); } catch (SQLException e) { e.printStackTrace(); } } /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Servis window = new Servis(); window.frmAraServisOtomasyonu.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public Servis() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frmAraServisOtomasyonu = new JFrame(); frmAraServisOtomasyonu.setTitle("Ara\u00E7 Servis Otomasyon"); frmAraServisOtomasyonu.setResizable(false); frmAraServisOtomasyonu.setBounds(100, 100, 694, 575); frmAraServisOtomasyonu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frmAraServisOtomasyonu.getContentPane().setLayout(null); JPanel pnlKayitBilgileri = new JPanel(); pnlKayitBilgileri.setBorder(new TitledBorder(null, "Kay\u0131t Bilgileri", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlKayitBilgileri.setBounds(10, 11, 658, 309); frmAraServisOtomasyonu.getContentPane().add(pnlKayitBilgileri); pnlKayitBilgileri.setLayout(null); JPanel pnlAracSahibi = new JPanel(); pnlAracSahibi.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Ara\u00E7 Sahibi", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); pnlAracSahibi.setBounds(10, 21, 311, 277); pnlKayitBilgileri.add(pnlAracSahibi); pnlAracSahibi.setLayout(null); JLabel lblAd = new JLabel("Ad\u0131 :"); lblAd.setHorizontalAlignment(SwingConstants.RIGHT); lblAd.setBounds(34, 42, 66, 14); pnlAracSahibi.add(lblAd); JLabel lblSoyad = new JLabel("Soyad\u0131 :"); lblSoyad.setHorizontalAlignment(SwingConstants.RIGHT); lblSoyad.setBounds(44, 67, 56, 14); pnlAracSahibi.add(lblSoyad); JLabel lblTelefon = new JLabel("Telefon :"); lblTelefon.setHorizontalAlignment(SwingConstants.RIGHT); lblTelefon.setBounds(34, 92, 66, 14); pnlAracSahibi.add(lblTelefon); JLabel lblMailAdresi = new JLabel("Mail Adresi :"); lblMailAdresi.setHorizontalAlignment(SwingConstants.RIGHT); lblMailAdresi.setBounds(21, 117, 79, 14); pnlAracSahibi.add(lblMailAdresi); JLabel lblAdresi = new JLabel("Adresi :"); lblAdresi.setHorizontalAlignment(SwingConstants.RIGHT); lblAdresi.setBounds(54, 142, 46, 14); pnlAracSahibi.add(lblAdresi); txtAd = new JTextField(); txtAd.setBounds(110, 39, 160, 20); pnlAracSahibi.add(txtAd); txtAd.setColumns(10); txtSoyad = new JTextField(); txtSoyad.setBounds(110, 64, 160, 20); pnlAracSahibi.add(txtSoyad); txtSoyad.setColumns(10); txtTelefon = new JTextField(); txtTelefon.setBounds(110, 89, 160, 20); pnlAracSahibi.add(txtTelefon); txtTelefon.setColumns(10); txtMail = new JTextField(); txtMail.setBounds(110, 114, 160, 20); pnlAracSahibi.add(txtMail); txtMail.setColumns(10); JTextPane tpAdres = new JTextPane(); tpAdres.setBounds(110, 142, 160, 101); pnlAracSahibi.add(tpAdres); JPanel pnlAracBilgileri = new JPanel(); pnlAracBilgileri.setBorder(new TitledBorder(null, "Ara\u00E7 Bilgileri", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlAracBilgileri.setBounds(331, 21, 317, 226); pnlKayitBilgileri.add(pnlAracBilgileri); pnlAracBilgileri.setLayout(null); JLabel lblModel = new JLabel("Model :"); lblModel.setHorizontalAlignment(SwingConstants.RIGHT); lblModel.setBounds(35, 45, 66, 14); pnlAracBilgileri.add(lblModel); JLabel lblBakmTr = new JLabel("Bak\u0131m T\u00FCr\u00FC :"); lblBakmTr.setHorizontalAlignment(SwingConstants.RIGHT); lblBakmTr.setBounds(22, 70, 79, 14); pnlAracBilgileri.add(lblBakmTr); JLabel lblPlaka = new JLabel("Plaka :"); lblPlaka.setHorizontalAlignment(SwingConstants.RIGHT); lblPlaka.setBounds(35, 95, 66, 14); pnlAracBilgileri.add(lblPlaka); JLabel lblTarih = new JLabel("Tarih :"); lblTarih.setHorizontalAlignment(SwingConstants.RIGHT); lblTarih.setBounds(22, 120, 79, 14); pnlAracBilgileri.add(lblTarih); JLabel lblEkikayetler = new JLabel("Ek \u015Eikayetler :"); lblEkikayetler.setHorizontalAlignment(SwingConstants.RIGHT); lblEkikayetler.setBounds(10, 145, 91, 14); pnlAracBilgileri.add(lblEkikayetler); txtPlaka = new JTextField(); txtPlaka.setColumns(10); txtPlaka.setBounds(111, 92, 160, 20); pnlAracBilgileri.add(txtPlaka); txtTarih = new JTextField(); txtTarih.setColumns(10); txtTarih.setBounds(111, 117, 160, 20); pnlAracBilgileri.add(txtTarih); JComboBox cmModel = new JComboBox(); cmModel.setModel(new DefaultComboBoxModel(new String[] {"2014", "2013", "2012", "2011", "2010", "2009", "2008", "2007", "2006", "2005", "2004", "2003", "2002", "2001", "2000"})); cmModel.setBounds(111, 42, 79, 20); pnlAracBilgileri.add(cmModel); JComboBox cmBakim = new JComboBox(); cmBakim.setModel(new DefaultComboBoxModel(new String[] {"10.000", "20.000", "30.000", "40.000", "50.000", "60.000", "70.000", "80.000", "90.000", "100.000", "110.000", "120.000", "130.000", "140.000", "150.000", "160.000", "170.000", "180.000", "190.000", "200.000"})); cmBakim.setBounds(111, 67, 79, 20); pnlAracBilgileri.add(cmBakim); JTextPane tpEkSikayet = new JTextPane(); tpEkSikayet.setBounds(111, 145, 160, 70); pnlAracBilgileri.add(tpEkSikayet); JButton btnNewButton = new JButton("Kaydet"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { adi = txtAd.getText(); soyadi = txtSoyad.getText(); telefon = Integer.parseInt(txtTelefon.getText()); mail = txtMail.getText(); adres = tpAdres.getText(); model = (String) cmModel.getSelectedItem(); bakim = (String) cmBakim.getSelectedItem(); plaka = txtPlaka.getText(); tarih = txtTarih.getText(); ek_sikayet = tpEkSikayet.getText(); Veritabani(); veriCek(); } }); btnNewButton.setBounds(559, 258, 89, 40); pnlKayitBilgileri.add(btnNewButton); JPanel pnlKayitlar = new JPanel(); pnlKayitlar.setBorder(new TitledBorder(null, "Kay\u0131tlar", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlKayitlar.setBounds(10, 331, 658, 194); frmAraServisOtomasyonu.getContentPane().add(pnlKayitlar); pnlKayitlar.setLayout(null); jtabEmail = new JTable(data, baslik); // --> Tabloyu oluşturur. JScrollPane jscrlp = new JScrollPane(jtabEmail); jscrlp.setBounds(10, 23, 638, 160); pnlKayitlar.add(jscrlp); } }
-
up
-
<code>import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class myTableModel extends AbstractTableModel{
private int satirSayisi;
private int kolonSayisi;
private ResultSet resultSet;// Sql sorgusundan dönen ResultSet
private ArrayList veri=new ArrayList();
//Constructor metod parametre olarak sql'in döndürdüğü resultset'i alıyor.
public myTableModel(ResultSet resultSet) throws Exception
{
setResultSet(resultSet);
}
public void setResultSet(ResultSet resultSet) throws Exception
{
this.resultSet = resultSet;
ResultSetMetaData metaData = resultSet.getMetaData();
satirSayisi = 0;
kolonSayisi = metaData.getColumnCount();
while (resultSet.next())
{
Object[] row = new Object[kolonSayisi];
for (int j = 0; j < kolonSayisi; j++)
{
row[j] = resultSet.getObject(j + 1);
}
veri.add(row);
satirSayisi++;
}
}
//Tablodaki satır sayısını döndüren metod
public int getRowCount()
{
return satirSayisi;
}
//Tablodaki kolon sayısını döndüren metod
public int getColumnCount()
{
return kolonSayisi;
}
//Bir hücredeki değeri döndüren metod
public Object getValueAt(int rowIndex, int columnIndex)
{
Object[] row=(Object[]) veri.get(rowIndex);
return row[columnIndex];
}
/*//Bu method sonradan dışarıdan eklendi
@Override
public String getColumnName(int columnIndex) {
try {
ResultSetMetaData metaData = resultSet.getMetaData();
return metaData.getColumnName(columnIndex + 1);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}*/
}
</code>
Şu şekilde de implement ettim call için;
public void fillTable()
{
try
{
Statement statement = connect.createStatement();
//ResulSet sql sorgusundan dönen cevap için var...
ResultSet res = statement.executeQuery("SELECT * FROM MusteriKayit");
// ResultSet res = statement.executeQuery("SELECT Firma,Plaka,AracSahibi,Telefon,FaturaBilgi,Tarih,RoterdorOil,"
//+ "SanzumanOil,DifransiyelOil,FrenOil,Aciklama,MazotFilter,SeparFilter,HavaFilter,KurutucuFilter FROM MusteriKayit"); //Veri tabanındaki tabledan kayıtları ResultSet'e al
myTableModel model = new myTableModel(res); //Tabloya model oluştur
table.setModel(model); //Tabloyu res'teki kayıtlar ile doldur
}
catch (Exception e)
{
JOptionPane.showConfirmDialog(null, "Tablo Yüklenemedi", "Program Hatası", JOptionPane.PLAIN_MESSAGE);//alert basma işlemi
}
}
Bu şekilde bir class yazman lazım ve ne zaman ihtiyacın olursa çağırman lazım mesela fillTable() şeklinde
-
DeadLyShadoW hocam cok tesekkurler ödevi teslim ettim fakat hemen bakıyorum.