Şimdi Ara

getColumnName Tablo Sütun isimlerini vt'dan çekme yardım.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
11
Cevap
0
Favori
1.590
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar Veri tabanı ile bir tabloya veri çekiyorum ancak sütun başlıkları boş geliyor. Ne yaptıysam getiremedim.


    myTableModel sınıfım:
     
    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();

    //Yapıcı 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];
    }

    //index'i verilen kolonun adını döndüren fonksiyon.
    @Override
    public String getColumnName(int columnIndex) {
    try {
    ResultSetMetaData metaData = resultSet.getMetaData();
    return metaData.getColumnName(columnIndex + 1);
    } catch (Exception e) {
    e.printStackTrace();
    return "";
    }

    }

    }


    myTableModel sınıfını kullanış şeklim:

     
    res = st.executeQuery("SELECT * FROM "+ tismi);
    myTableModel model = new myTableModel(res);
    anaTablo.setModel(model);



    Bu şekilde ama Tablo sütun isimlerini veri tabanından çekemiyorum. Sizce neden olabilir?







  • up+
  • yazdığınız kodun getireceği nesne direk olarak tabloya tanımlanabilir mi onu bilmiyorum.

    sütun isimlerini gösteren metodu tek başına çalıştırmayı denediniz mi?

    res = st.executeQuery("SELECT * FROM "+ tismi);
    myTableModel model = new myTableModel(res);
    system.out.println( model.getColumnName(0) );
  • quote:

    Orijinalden alıntı: GTX61

    yazdığınız kodun getireceği nesne direk olarak tabloya tanımlanabilir mi onu bilmiyorum.

    sütun isimlerini gösteren metodu tek başına çalıştırmayı denediniz mi?

    res = st.executeQuery("SELECT * FROM "+ tismi);
    myTableModel model = new myTableModel(res);
    system.out.println( model.getColumnName(0) );

    Yanıtınız için teşekkür ederim ancak
    system.out.println( model.getColumnName(0) );
    bu code, DataBase dosyasındaki sütün isimlerini consol'a yazdırır. Benim istediğim jTable nesnesine sütün isimlerinin gelmesi. Yapamadım gitti.
  • quote:

    Orijinalden alıntı: Madem24

    quote:

    Orijinalden alıntı: GTX61

    yazdığınız kodun getireceği nesne direk olarak tabloya tanımlanabilir mi onu bilmiyorum.

    sütun isimlerini gösteren metodu tek başına çalıştırmayı denediniz mi?

    res = st.executeQuery("SELECT * FROM "+ tismi);
    myTableModel model = new myTableModel(res);
    system.out.println( model.getColumnName(0) );

    Yanıtınız için teşekkür ederim ancak
    system.out.println( model.getColumnName(0) );
    bu code, DataBase dosyasındaki sütün isimlerini consol'a yazdırır. Benim istediğim jTable nesnesine sütün isimlerinin gelmesi. Yapamadım gitti.

    ben onu çözüm olarak sunmadım, çalıştığını kontrol etmek için dedim

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • quote:

    Orijinalden alıntı: GTX61


    quote:

    Orijinalden alıntı: Madem24

    quote:

    Orijinalden alıntı: GTX61

    yazdığınız kodun getireceği nesne direk olarak tabloya tanımlanabilir mi onu bilmiyorum.

    sütun isimlerini gösteren metodu tek başına çalıştırmayı denediniz mi?

    res = st.executeQuery("SELECT * FROM "+ tismi);
    myTableModel model = new myTableModel(res);
    system.out.println( model.getColumnName(0) );

    Yanıtınız için teşekkür ederim ancak
    system.out.println( model.getColumnName(0) );
    bu code, DataBase dosyasındaki sütün isimlerini consol'a yazdırır. Benim istediğim jTable nesnesine sütün isimlerinin gelmesi. Yapamadım gitti.

    ben onu çözüm olarak sunmadım, çalıştığını kontrol etmek için dedim

    Hee Anladım şimdi teşekkür ederim. Evet sütun isimleri geliyor evet. Kusura bakmayın kafam dağınık biraz da...




  • şimdi kodu benim eclipse'e kopyalayınca fark ettim, colon isimleri kurucu metotta çağrılmıyor. kendim bi şekilde çağırsam bile kolon isimlerini atayabileceğim bir metot bulamadım. ( örneğin, model.setColumnIdentifiers(kolonlar); )

    biraz değişiklik yapman gerekecek ama farklı bir yol önereyim. AbstractTableModel'den extend etmek yerine veri tabanına düm düz bağlantı yapan bir class yap sonra class içerisine "public DefaultTableModel getTable()" şeklinde modeli içerisinde oluşturacağın ve buradan çağıracağın bir metot yaz. içerisinde de DefaultTableModel türünde bir nesne oluştur ve bu nesneye tablodan çağırdığın değerleri set et (yukarda parantez içinde yazdığım metodu kullanarak içerisine String türünde dizi olarak bütün kolon isimlerini atabilirsin). son olarak bu nesneyi return ederek metodu bitir.



    < Bu mesaj bu kişi tarafından değiştirildi Guest -- 21 Nisan 2013; 0:43:35 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Yorumunuz için teşekkür ederim ancak tablo sabit değil. Yani yaklaşık olarak 60 tane tablo var ve hepsi için tek tek bu işlemi yapmak ölüm :) Şimdi diziyi object tipinde tanımlayarak ve colon sayısına eşitleyerek deneyeceğim. İlgi ve alakanız için teşekkür ederim...
  • ben anlatamadım galiba, önerdiğim şeyin yaptığınızdan farkı olmaması lazım. akşam müsait olunca bi örnek kod göndereyim.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ilk mesajda verdiğin class'ı dediğim şekilde özelleştirdim. bunu yaparken de senin kullandığın veri tiplerini ve esnekliği korumaya çalıştım.

    package Denemeler; 

    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.util.ArrayList;

    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableModel;

    public class MyTableModel {

    private int satirSayisi;
    private int kolonSayisi;
    private ResultSet resultSet;
    private ArrayList veri = new ArrayList();

    private DefaultTableModel model = new DefaultTableModel();
    private String kolonlar[];

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

    kolonlar = new String[kolonSayisi];

    for (int i = 0; i < kolonSayisi; i++) {
    kolonlar[i] = getColumnName(i);
    }

    model.setColumnIdentifiers(kolonlar);

    while (resultSet.next()) {
    Object[] row = new Object[kolonSayisi];
    for (int j = 0; j < kolonSayisi; j++) {
    row[j] = resultSet.getObject(j + 1);
    }

    model.addRow(row);

    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];
    }

    // index'i verilen kolonun adını döndüren fonksiyon.

    public String getColumnName(int columnIndex) {
    try {
    ResultSetMetaData metaData = resultSet.getMetaData();
    return metaData.getColumnName(columnIndex + 1);

    } catch (Exception e) {
    e.printStackTrace();
    return "";
    }

    }

    public DefaultTableModel getModel() {
    return model;
    }

    }


    class böyle olunca kullanım şeklin de şöyle olmalı:

    res = st.executeQuery("SELECT * FROM "+ tismi); 
    myTableModel model = new myTableModel(res);
    anaTablo.setModel(model.getModel);




  • quote:

    Orijinalden alıntı: GTX61

    ilk mesajda verdiğin class'ı dediğim şekilde özelleştirdim. bunu yaparken de senin kullandığın veri tiplerini ve esnekliği korumaya çalıştım.

    package Denemeler; 

    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.util.ArrayList;

    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableModel;

    public class MyTableModel {

    private int satirSayisi;
    private int kolonSayisi;
    private ResultSet resultSet;
    private ArrayList veri = new ArrayList();

    private DefaultTableModel model = new DefaultTableModel();
    private String kolonlar[];

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

    kolonlar = new String[kolonSayisi];

    for (int i = 0; i < kolonSayisi; i++) {
    kolonlar[i] = getColumnName(i);
    }

    model.setColumnIdentifiers(kolonlar);

    while (resultSet.next()) {
    Object[] row = new Object[kolonSayisi];
    for (int j = 0; j < kolonSayisi; j++) {
    row[j] = resultSet.getObject(j + 1);
    }

    model.addRow(row);

    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];
    }

    // index'i verilen kolonun adını döndüren fonksiyon.

    public String getColumnName(int columnIndex) {
    try {
    ResultSetMetaData metaData = resultSet.getMetaData();
    return metaData.getColumnName(columnIndex + 1);

    } catch (Exception e) {
    e.printStackTrace();
    return "";
    }

    }

    public DefaultTableModel getModel() {
    return model;
    }

    }


    class böyle olunca kullanım şeklin de şöyle olmalı:

    res = st.executeQuery("SELECT * FROM "+ tismi); 
    myTableModel model = new myTableModel(res);
    anaTablo.setModel(model.getModel);


    Allah sizden rağzı olsun. Şimdi sorunsuz çalışıyor. Yardımınız için ne kadar teşekkür etsem azdır.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.