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