carookee - group communication for you
Home / JavaForum / JDBC
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.992 User online
1 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 88 von 277 (32%) |<   <   >   >|

Autor mbertholl
Datum 30.09.03, 11:16
Betreff mysqldb in jtable - schnelle Antwort wäre toll


Hallo für eine Demo- Anwendung habe ich folgendes Beipiel aus Core Java 2 implemntiert:

//Zwei Ableitungen von Tablemodell - geht bis zu
----------------------
----------------------

abstract class ResultSetTableModel extends AbstractTableModel
{
/**
Konstruiert das Tabellenmodell.
@param aResultSet Anzuzeigende Ergebnismenge
*/
public ResultSetTableModel(ResultSet aResultSet)
{
rs = aResultSet;
try
{
rsmd = rs.getMetaData();
}
catch(SQLException e)
{
e.printStackTrace();
}
}

public String getColumnName(int c)
{
try
{
return rsmd.getColumnName(c + 1);
}
catch(SQLException e)
{
e.printStackTrace();
return "";
}
}

public int getColumnCount()
{
try
{
return rsmd.getColumnCount();
}
catch(SQLException e)
{
e.printStackTrace();
return 0;
}
}

/**
Holt die Ergebnismenge, die dieses Modell offen legt.
@return Die Ergebnismenge
*/
protected ResultSet getResultSet()
{
return rs;
}

private ResultSet rs;
private ResultSetMetaData rsmd;
}

/**
Dieses Klasse verwendet einen bildlauffähigen Cursor (ein
JDBC 2-Feature), um Elemente der Ergebnismenge zu lokalisieren.
*/
class ScrollingResultSetTableModel extends ResultSetTableModel
{
/**
Konstruiert das Tabellenmodell.
@param aResultSet Anzuzeigende Ergebnismenge
*/
public ScrollingResultSetTableModel(ResultSet aResultSet)
{
super(aResultSet);
}

public Object getValueAt(int r, int c)
{
try
{
ResultSet rs = getResultSet();
rs.absolute(r + 1);
return rs.getObject(c + 1);
}
catch(SQLException e)
{
e.printStackTrace();
return null;
}
}

public int getRowCount()
{
try
{
ResultSet rs = getResultSet();
rs.last();
return rs.getRow();
}
catch(SQLException e)
{
e.printStackTrace();
return 0;
}
}
}


abstract class ResultSetTableModel extends AbstractTableModel
{
/**
Konstruiert das Tabellenmodell.
@param aResultSet Anzuzeigende Ergebnismenge
*/
public ResultSetTableModel(ResultSet aResultSet)
{
rs = aResultSet;
try
{
rsmd = rs.getMetaData();
}
catch(SQLException e)
{
e.printStackTrace();
}
}

public String getColumnName(int c)
{
try
{
return rsmd.getColumnName(c + 1);
}
catch(SQLException e)
{
e.printStackTrace();
return "";
}
}

public int getColumnCount()
{
try
{
return rsmd.getColumnCount();
}
catch(SQLException e)
{
e.printStackTrace();
return 0;
}
}

/**
Holt die Ergebnismenge, die dieses Modell offen legt.
@return Die Ergebnismenge
*/
protected ResultSet getResultSet()
{
return rs;
}

private ResultSet rs;
private ResultSetMetaData rsmd;
}

/**
Dieses Klasse verwendet einen bildlauffähigen Cursor (ein
JDBC 2-Feature), um Elemente der Ergebnismenge zu lokalisieren.
*/
class ScrollingResultSetTableModel extends ResultSetTableModel
{
/**
Konstruiert das Tabellenmodell.
@param aResultSet Anzuzeigende Ergebnismenge
*/
public ScrollingResultSetTableModel(ResultSet aResultSet)
{
super(aResultSet);
}

public Object getValueAt(int r, int c)
{
try
{
ResultSet rs = getResultSet();
rs.absolute(r + 1);
return rs.getObject(c + 1);
}
catch(SQLException e)
{
e.printStackTrace();
return null;
}
}

public int getRowCount()
{
try
{
ResultSet rs = getResultSet();
rs.last();
return rs.getRow();
}
catch(SQLException e)
{
e.printStackTrace();
return 0;
}
}
}

---------------------------------------------------
---------------------------------------------------

rs holt sich per executeQuery die Daten - klappt auch!
jetzt die Übergabe an Tablemodell bzw an JTable
----------------------
//Übergabe Resultset an model
model = new ScrollingResultSetTableModel(rs);

//Übergabe model an JTable
table = new JTable(model);
-----------------------
Normalerweise bin ich davon ausgegangen das das alles ist. Weil es nicht funktioniert, habe ich noch folgendes implementiert:
--------------------------
colcount = model.getColumnCount();
rowcounbt = 0;
while(rs.next())
{
for(int i=0;i<colcount;i++)
table = (JTable)model.getValueAt(rowcount,i);
rowcount++;
}

//Anfügen von Table an Scrollpane
scroll = new JScrollPane(table);

Das Problem:

JTable enthält nur die Metadaten. Die Datenzeilen selber werden nicht angezeigt.

Hat jemand eine Idee?

Danke im Vorraus

mbertholl


Diskussionsverlauf:
    Re: mysqldb in jtable - schnelle Antwort wäre toll
mysqldb in jtable - schnelle Antwort wäre toll

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com