Add getNonPrimaryKeyColumnNames method which gets column names

from ResultSetMetaData
In canonicalize method, the canonical name of a null table is null
In process method, if the table name is null, obtain the column
  names from the ResultSetMetaData
In process method, support BIGINT/long data type
Add query method which uses PreparedStatements


git-svn-id: http://scm.dspace.org/svn/repo/trunk@57 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Peter Breton
2002-05-30 16:00:18 +00:00
parent 21a56e8b3c
commit 2cbf4386e3

View File

@@ -112,6 +112,25 @@ public class DatabaseManager
canonicalize(table)); canonicalize(table));
} }
/**
* Return an iterator with the results of executing STATEMENT.
* The type of result is given by TABLE.
* The context is that of the connection which was used to create
* STATEMENT.
*
* @param statement - The prepared statement
* @param table - The name of the table which results
* @return - A TableRowIterator with the results of the query
* @exception SQLException - If a database error occurs
*/
public static TableRowIterator query(String table,
PreparedStatement statement)
throws SQLException
{
return new TableRowIterator(statement.executeQuery(),
canonicalize(table));
}
/** /**
* Return the single row result to this query, null if no result. * Return the single row result to this query, null if no result.
* If more than one row results, only the first is returned. * If more than one row results, only the first is returned.
@@ -463,6 +482,23 @@ public class DatabaseManager
return results; return results;
} }
/**
* Return a list of all the columns which are not primary keys
*/
protected static List getNonPrimaryKeyColumnNames ( ResultSetMetaData meta)
throws SQLException
{
List results = new ArrayList();
int columns = meta.getColumnCount();
for (int i = 0; i < columns; i++ )
{
results.add(meta.getColumnLabel(i + 1));
}
return results;
}
/** /**
* Return the canonical name for TABLE. * Return the canonical name for TABLE.
* *
@@ -471,7 +507,7 @@ public class DatabaseManager
*/ */
static String canonicalize(String table) static String canonicalize(String table)
{ {
return table.toLowerCase(); return table == null ? null : table.toLowerCase();
} }
//////////////////////////////////////// ////////////////////////////////////////
@@ -622,12 +658,16 @@ public class DatabaseManager
static TableRow process (ResultSet results, String table) static TableRow process (ResultSet results, String table)
throws SQLException throws SQLException
{ {
TableRow row = new TableRow(canonicalize(table),
getNonPrimaryKeyColumnNames(table));
ResultSetMetaData meta = results.getMetaData(); ResultSetMetaData meta = results.getMetaData();
int columns = meta.getColumnCount() + 1; int columns = meta.getColumnCount() + 1;
List columnNames = table == null ?
getNonPrimaryKeyColumnNames(meta) :
getNonPrimaryKeyColumnNames(table);
TableRow row = new TableRow(canonicalize(table), columnNames);
// Process the columns in order // Process the columns in order
// (This ensures maximum backwards compatibility with // (This ensures maximum backwards compatibility with
// old JDBC drivers) // old JDBC drivers)
@@ -644,6 +684,10 @@ public class DatabaseManager
{ {
row.setColumn(name, results.getInt(i)); row.setColumn(name, results.getInt(i));
} }
else if (jdbctype == Types.BIGINT)
{
row.setColumn(name, results.getLong(i));
}
else if (jdbctype == Types.VARCHAR) else if (jdbctype == Types.VARCHAR)
{ {
row.setColumn(name, results.getString(i)); row.setColumn(name, results.getString(i));