Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError:
hi,
i have to build similar sql query analizer. i am using jdbc and swing.
my frame contains jtable and jtree. jtree contains schemas and tables.
Jtables show mysql table data, when user choose table in Jtree.
its run first click and second.... But after a few click its doesnt run and i get this Exception:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.Buffer.getBytes(Buffer.java:198)
at com.mysql.jdbc.Buffer.readLenByteArray(Buffer.java:318)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1345)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2330)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:427)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2035)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1421)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1772)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2430)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2359)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1227)
at Database.getQueryRs(Database.java:50)
at Database.getColumnNames(Database.java:30)
at NewJFrame.tableDegis(NewJFrame.java:221)
at NewJFrame.jTree1ValueChanged(NewJFrame.java:196)
at NewJFrame.access$000(NewJFrame.java:21)
at NewJFrame$1.valueChanged(NewJFrame.java:93)
at javax.swing.JTree.fireValueChanged(JTree.java:2825)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3196)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:629)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1078)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:287)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java:170)
at javax.swing.JTree.setSelectionPath(JTree.java:1600)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2410)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:3619)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3558)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:262)
at java.awt.Component.processMouseEvent(Component.java:6035)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
privatevoid jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt){
try{
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
jTree1.getLastSelectedPathComponent();
if (node ==null)return;
if (node.isLeaf()){
if(node.getLevel() > 1){
System.out.println(node.getParent());
tableDegis(node.getParent().toString(),node.toString());
}
}else{
}
}catch(Exception e){
}
}
privatevoid tableDegis(String schema,String table){
DefaultTableModel tablemodel =new DefaultTableModel();
tablemodel.setDataVector(db.getData(schema,table),db.getColumnNames(schema,table));
jTable1.setModel(tablemodel);
System.out.println(db.getColumnNames(schema,table));
System.gc();
}
public Vector getColumnNames(String schemaName,String tableName){
Vector<String> columnNames =new Vector<String>();
try{
ResultSet rs = getQueryRs(schemaName,tableName);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++){
columnNames.addElement( md.getColumnName(i) );
}
}catch(Exception e){}
System.gc();
return columnNames;
}
public ResultSet getQueryRs(String schemaName,String tableName){
ResultSet rs =null;
try{
String sql ="Select * from "+tableName;
connection.setCatalog(schemaName);
Statement stmt3 = connection.createStatement();
rs = stmt3.executeQuery( sql );
}catch(Exception e){
}
System.gc();
return rs;
}
public Vector getData(String schemaName,String tableName){
Vector<Vector><Object>> data =new Vector<Vector><Object>>();
try{
ResultSet rs = getQueryRs(schemaName,tableName);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
while (rs.next()){
Vector<Object> row =new Vector<Object>(columns);
for (int i = 1; i <= columns; i++){
row.addElement( rs.getObject(i) );
}
data.addElement( row );
}
}catch(Exception e){}
System.gc();
return data;
}

