Categories: MSDN / DotNet / Java / Scripts / Linux / PHP Ask - La ask - La Answer

Generate JTable from a SQL Query containing UNION clause

Hello Friends...

Following is the code that i write to convert the Data returned from the ResultSet of an SQL query, to be filled into a JTable.

This code works fine for the normal query...but in the case of a SQL query containing a UNION clause For eg. :

SELECT * FROM Table_1
UNION
SELECT * FROM Table_2

it only returns the results of the first part of the above query..i.e. for

SELECT * FROM Table_1

/*
* JDBCTableModel.java
*
* Created on March 1, 2006, 8:51 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package tradetrakker;

import java.sql.*;
import javax.swing.table.AbstractTableModel;

/**
* Class for generating a JTableModel for a given Relational Database
* @author Vaibhav Pingle
*/
public class JDBCTableModel extends AbstractTableModel {

private int colCount = 0;
private int rowCount = 0;

/**
* Integer to store rowData
*/
private Object rowData[][];
/**
* Integer to store colData
*/
private String columnNames[];

/**
* Creates a new JDBCTableModel with
* @param rs - ResultSet Object
*/
public JDBCTableModel(ResultSet rs) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
colCount = rsmd.getColumnCount();

columnNames = new String[colCount];

int i=0, j=0;

while(i<rsmd.getColumnCount()) {
columnNames[i] = rsmd.getColumnName(i+1);
i++;
}

rowCount = 0;
while(rs.next())
rowCount++;


rowData = new Object[rowCount][colCount];
i=0;
rs.beforeFirst();
while(rs.next()) {
j=1;
while(j <= colCount) {
Object obj = rs.getObject(j);
rowData[i][j-1] = obj;
j++;
}
i++;
}
}

/**
* Returns the object located at (rowIndex, columnIndex)
* @param rowIndex - Integer value to select row
* @param columnIndex - Integer value to select column
* @return the value at (rowIndex, columnIndex)
*/
public Object getValueAt(int rowIndex, int columnIndex) {
return rowData[rowIndex][columnIndex];
}

/**
* Returns the Number of Rows in the JTable.
* @return the number of rows.
*/
public int getRowCount() {
return rowCount;
}

/**
* Returns the Number of Columns in the JTable.
* @return the number of Columns.
*/
public int getColumnCount() {
return colCount;
}

/**
* Returns the Name of the Column at index.
* @param column - Integer value to select Column.
* @return the name of the Column.
*/
public String getColumnName(int column) {
return columnNames[column];
}
}


Please tell me if there are any changes required in this above code OR if there is any SQL driver problem...If its a driver problem, then please tell me what i am suppose to do (I am using MS Access as my database)
[4026 byte] By [vaibhavpingle] at [2007-11-11 9:56:21]