The answer depends on the DBMS, the driver, and the type of ResultSet object you have. You can usually see inserts and deletes, but the only way to be sure is to use DatabaseMetaData methods that return this information. You can to some extent regulate what changes are visible by raising or lowering the transaction isolation level for your connection with the database. The problem is that the higher the isolation level, the poorer the performance. And, as is always true of databases and drivers, you are limited to what they actually provide.
Many programmers just use their database's default transaction isolation level.
If you want more information about transaction isolation levels, you should consult a book on databases or the second edition of JDBC Database Access with Java . Some programmers use only this type of ResultSet object because they want a consistent view of data and do not want to see changes made by others. You can use the method refreshRow to get the latest values for a row straight from the database. This method can be very expensive, especially if the DBMS returns multiple rows each time you call refreshRow . Nevertheless, its use can be valuable if it is critical to have the latest data.