Commit 0daee96e authored by Dave Cramer's avatar Dave Cramer

implemented refresh row

parent 0dbfea39
...@@ -76,7 +76,10 @@ public class UpdateableResultSet extends org.postgresql.jdbc2.ResultSet ...@@ -76,7 +76,10 @@ public class UpdateableResultSet extends org.postgresql.jdbc2.ResultSet
protected java.sql.PreparedStatement deleteStatement = null; protected java.sql.PreparedStatement deleteStatement = null;
private java.sql.Statement currentStatement = null; /**
* PreparedStatement used to refresh data
*/
private java.sql.PreparedStatement selectStatement = null;
/** /**
...@@ -617,6 +620,78 @@ public class UpdateableResultSet extends org.postgresql.jdbc2.ResultSet ...@@ -617,6 +620,78 @@ public class UpdateableResultSet extends org.postgresql.jdbc2.ResultSet
} }
public void refreshRow() throws SQLException
{
if ( !isUpdateable() )
{
throw new PSQLException( "postgresql.updateable.notupdateable" );
}
try
{
StringBuffer selectSQL = new StringBuffer( "select ");
final int numColumns = java.lang.reflect.Array.getLength(fields);
for (int i=0; i < numColumns ; i++ )
{
selectSQL.append( fields[i].getName() );
if ( i < numColumns - 1 )
{
selectSQL.append(", ");
}
}
selectSQL.append(" from " ).append(tableName).append(" where ");
int numKeys = primaryKeys.size();
for ( int i = 0; i < numKeys; i++ )
{
PrimaryKey primaryKey = ((PrimaryKey)primaryKeys.get(i));
selectSQL.append(primaryKey.name).append("= ?");
if ( i < numKeys -1 )
{
selectSQL.append(" and ");
}
}
if ( Driver.logDebug ) Driver.debug("selecting "+ selectSQL.toString());
selectStatement = ((java.sql.Connection)connection).prepareStatement(selectSQL.toString());
for( int j=0, i=1; j < numKeys; j++, i++)
{
selectStatement.setObject( i, ((PrimaryKey)primaryKeys.get(j)).getValue() );
}
org.postgresql.jdbc2.ResultSet rs = (org.postgresql.jdbc2.ResultSet) selectStatement.executeQuery();
if( rs.first() )
{
rowBuffer = rs.rowBuffer;
}
rows.setElementAt( rowBuffer, current_row );
if ( Driver.logDebug ) Driver.debug("done updates");
rs.close();
selectStatement.close();
selectStatement = null;
}
catch (Exception e)
{
if ( Driver.logDebug ) Driver.debug(e.getClass().getName()+e);
throw new SQLException( e.getMessage() );
}
}
/** /**
* *
* @throws SQLException * @throws SQLException
......
...@@ -57,7 +57,7 @@ public class UpdateableResultTest extends TestCase ...@@ -57,7 +57,7 @@ public class UpdateableResultTest extends TestCase
rs.updateString("name", "paul"); rs.updateString("name", "paul");
rs.insertRow(); rs.insertRow();
rs.refreshRow();
assertTrue( rs.getInt("id") == 3 ); assertTrue( rs.getInt("id") == 3 );
assertTrue( rs.getString("name").equals("paul")); assertTrue( rs.getString("name").equals("paul"));
assertTrue( rs.getString("notselected") == null ); assertTrue( rs.getString("notselected") == null );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment