Wyświetlanie danych z bazy danych w JTable

0

Witam, od paru dni męczę się z wyświetleniem danych w komponencie JTable
Chciałbym pobierać z bazy danych dane - i wyświetlać je w JTable

Udało mi się jak na razie pobrać pojedynczy rekord i wstawić go do JTable, ale za Chiny ludowe nie wiem jak mam pobrać macierz danych i wstawić ją do JTable. Może poniższy kod ułatwi pomoc:

package testowe;
import java.sql.*;  
import javax.swing.*; 
import java.awt.*; 
import javax.swing.table.*; 
import java.util.Vector; 

public class SimpleTable extends JFrame 
{ 
public SimpleTable()
{ 
super("Simple JTable Test"); 
setSize(350, 200); 
setLocation(250,300); 
int ColCount; 
int i; 
int h; 
//int row, con;

try 
{ 
	DriverManager.registerDriver(new com.sybase.jdbc3.jdbc.SybDriver()); 
    String url = "jdbc:sybase:Tds:localhost:2638/asademo";
	Connection conDB = DriverManager.getConnection(url, "dba", "sql");

ResultSet rset1 = null; 
Statement stmt1 = null; 
//Statement stmt2 = null; 
String ID_klienta = null; 
String Imie = null;

String kolumny[] = { "ID_klienta", "Imie" };
String dane[][] = {{}};

stmt1 = conDB.createStatement(); 
rset1 = stmt1.executeQuery("select * from Klienci"); 

//Vector rekordy = new Vector();
//rekordy.toArray(dane);

ResultSetMetaData meta = rset1.getMetaData(); 
ColCount=meta.getColumnCount(); 


 /*	Vector<String> row = new Vector<String>();
	row.addElement( rset1.getString("ID_klienta"));
	row.addElement( rset1.getString("Imie"));
	//row.toArray(dane);
	row.capacity();	
 */
while (rset1.next()) 
{ 
	
String [] record= new String[ColCount]; 

for (i=0; i<ColCount; i++) 
{ 	
record[i]=rset1.getString(i+1); 
System.out.println("dane osoo: " + Imie);  // <-- wyswietla dane w konsoli
} 

ID_klienta = rset1.getString("ID_klienta"); 
Imie = rset1.getString( "Imie"); 
} 

JTable jt;
jt = new JTable (new String[][] {{ID_klienta,Imie}},kolumny); // <- chyba tu jest problem  
 //(new String[][] {{ID_klienta,Imie}},kolumny); 
	
JScrollPane jsp = new JScrollPane(jt); 
getContentPane().add(jsp, BorderLayout.CENTER); 
} 
catch (Exception e) 
{ 
	System.out.println("failure to connect " + e); 
return; //(exit(1)); 
} 
} 


public static void main(String args[]) { 
SimpleTable st = new SimpleTable(); 
st.setVisible(true); 
System.gc();
} 
} 

Chodzi chyba o te fragmenty kodu:

while (rset1.next()) 
{ 
	
String [] record= new String[ColCount]; 

for (i=0; i<ColCount; i++) 
{ 	
record[i]=rset1.getString(i+1); 
System.out.println("dane osoo: " + Imie);  // <-- wyswietla dane w konsoli
} 

ID_klienta = rset1.getString("ID_klienta"); 
Imie = rset1.getString( "Imie"); 
}

oraz:

jt = new JTable (new String[][] {{ID_klienta,Imie}},kolumny); 

powinno być chyba:

jt = new JTable (dane,kolumny); 

ale nie wiem, jak do tej tablicy przekierować wszystkie dane z bazy danych

Caly mój problem polega na tym, iż nie wiem jak pobrane dane z tej bazy, zapisać do macierzy, a następnie przekierować do JTable

Pracuję w środowisku Eclipse, korzystam z ASA 11

0

Sprawa nie jest trudna, może trochę marudna.
Do tabeli możesz podać dane w postaci albo wektora albo tablicy.
Z tym że oba parametry przy budowaniu modelu tabeli muszą być tego samego typu.

jTable0 = new JTable();
jTable0.setModel(new DefaultTableModel(tablica z danymi,tablica z nazwami kolumn);
jTable0.setModel(new DefaultTableModel(vector z danymi,vector z nazwami kolumn);

następnie rzecz już jest prosta bo wystarczy
teraz zbudować wektor , bądź tablicę z danymi
ja na przykład zrobiłem sobie metodę która przekształca dane z mojej klasy na dane zrozumiałe dla tabeli.

public Vector<Vector> getsimleVector() {
		Vector<Vector> productVector = new Vector<Vector>();
		for (Product product: pVector) {
			
			Vector<String> element = new Vector<String>();
			
			element.add(product.getId().toString());
			element.add(product.getName());
			element.add(product.getQunatity().toString());
			productVector.addElement(element);
			
		}
		return productVector;
	}

w ten sposób generuje wektor który mogę podstawić do tabeli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1