package fr.lteconsulting.hexa.server.qpath;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class DBResults
{
Statement stmt;
ResultSet sqlRes;
ResultSetMetaData meta;
public DBResults( ResultSet sqlRes, Statement stmt )
{
this.stmt = stmt;
this.sqlRes = sqlRes;
}
public void close()
{
try
{
sqlRes.close();
}
catch( SQLException e )
{
e.printStackTrace();
}
}
/*
* Results meta data
*/
public int getColumnCount()
{
ensureMeta();
try
{
return meta.getColumnCount();
}
catch( SQLException e )
{
e.printStackTrace();
return 0;
}
}
public String getColumnName( int column )
{
ensureMeta();
try
{
return meta.getColumnLabel( column + 1 );
}
catch( SQLException e )
{
e.printStackTrace();
return null;
}
}
public int getColumnIndex( String column )
{
int n = getColumnCount();
for( int i = 0; i < n; i++ )
{
if( getColumnName( i ).equalsIgnoreCase( column ) )
return i;
}
return -1;
}
public int getRowCount()
{
try
{
// get the current position so that we can later put back the cursor
int current = sqlRes.getRow();
int res;
if( !sqlRes.last() )
res = 0;
else
res = sqlRes.getRow();
// reposition the cursor to where it was before the call
if( current == 0 )
sqlRes.beforeFirst();
else
sqlRes.absolute( current );
return res;
}
catch( SQLException e )
{
return -1;
}
}
/*
* Results navigation
*/
public boolean next()
{
try
{
return sqlRes.next();
}
catch( SQLException e )
{
e.printStackTrace();
return false;
}
}
public Object getObject( int column )
{
try
{
return sqlRes.getObject( column + 1 );
}
catch( SQLException e )
{
e.printStackTrace();
return null;
}
}
public String getString( int column )
{
try
{
return sqlRes.getString( column + 1 );
}
catch( SQLException e )
{
e.printStackTrace();
return null;
}
}
public Integer getInt( int column )
{
try
{
return sqlRes.getInt( column + 1 );
}
catch( SQLException e )
{
e.printStackTrace();
return null;
}
}
/*
* Privates...
*/
private void ensureMeta()
{
if( meta != null )
return;
try
{
meta = sqlRes.getMetaData();
}
catch( SQLException e )
{
e.printStackTrace();
}
}
}