Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
10
Cevap
1629
Tıklama
0
Öne Çıkarma
getColumnName Tablo Sütun isimlerini vt'dan çekme yardım.
M
12 yıl
Onbaşı
Konu Sahibi

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?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



M
12 yıl
Onbaşı
Konu Sahibi

G
12 yıl
Yarbay

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


Bu mesaja @Madem24 cevap verdi.
M
12 yıl
Onbaşı
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
G
12 yıl
Yarbay

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ı >
Bu mesaja @Madem24 cevap verdi.
M
12 yıl
Onbaşı
Konu Sahibi

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...



G
12 yıl
Yarbay

ş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 >
Bu mesaja @Madem24 cevap verdi.

Bu mesajda bahsedilenler: @Madem24
M
12 yıl
Onbaşı
Konu Sahibi

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...




Bu mesajda bahsedilenler: @GTX61
G
12 yıl
Yarbay

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ı >
Bu mesaja @Guest cevap verdi.
G
12 yıl
Yarbay

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


Bu mesaja @Madem24 cevap verdi.

Bu mesajda bahsedilenler: @Madem24
M
12 yıl
Onbaşı
Konu Sahibi

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.




Bu mesajda bahsedilenler: @GTX61
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.