On 09/06/10 14:09, Kris Jurka wrote:
>
>
> On Tue, 8 Jun 2010, miguel manzano wrote:
>
>> I try to obtain the database's list in my instalation but when I use :
>>
>> System.out.println("Driver : ");
>> System.out.println(" " + md.getDatabaseProductName() );
>> System.out.println(" " + md.getDatabaseProductVersion() );
>> ResultSet catalogRs = md.getCatalogs();
>>
>> while ( catalogRs.next() ){
>>
>> System.out.println("Catalog " + catalogRs.getString(1));
>> ResultSet tableRs =
>> md.getTables(catalogRs.getString(1),"%","%",(String []) null);
>> }
>> }
>> I just got only the name of the database at I have conected but the
>> another databases didn't figure in the list.
>
> The JDBC driver avoids returning all the databases on the server because
> it cannot access them. It can only access the current database so that
> is all it returns from getCatalogs. We made this decision intentionally
> to handle the exact situation that your next getTables call reveals. If
> we returned other databases in getCatalogs, people would try to use them
> in other database metadata calls which would not work.
To elaborate: If you want to use queries "across databases" or otherwise
use more than one database in a single connection, you probably need to
use schema not databases to separate things.
PostgreSQL's "schema" are like MySQL's "databases"; they're ways of
dividing up naming of objects that live within the same storage space.
--
Craig Ringer
Tech-related writing: http://soapyfrogs.blogspot.com/