My 1st JDBC and PostgreSQL

Started by Amn Ojee Uwover 2 years ago7 messagesgeneral
Jump to latest
#1Amn Ojee Uw
amnojeeuw@gmail.com

Following the example in :
https://www.tutorialspoint.com/postgresql/postgresql_java.htm
I wrote the bellow method :

public void connectToDatabase() throws ClassNotFoundException,
SQLException {
        try {
            this.perr(this.getDatabaseClass()); //
org.postgresql.Driver = Class
            this.perr(this.getDatabaseUrl());   //
jdbc:postgresql://localhost:5432/sara.pgdb = url
            this.perr(this.getUserID());        // chispa = user
            this.perr(this.getUserPassword());  // 8UUKZW = password

            Class.forName(this.getDatabaseClass().toString());
            conn =
DriverManager.getConnection(this.getDatabaseUrl().toString(),
                    this.getUserID().toString(),
                    this.getUserPassword().toString() );
        } catch (final SQLException | ClassNotFoundException e) {
            throw e;
        }
    }

However, it throws an exception that reads :
Exception in thread "main" org.postgresql.util.PSQLException: FATAL:
database "sara.pgdb" does not exist

In reference to the above web page, it reads :
The following Java code shows how to connect to an existing database. If
the database does not exist, then it will be created and finally a
database object will be returned.

True, the database file does not exist, but isn't JDBC supposed to
create it?

Any help would be much appreciated.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Amn Ojee Uw (#1)
Re: My 1st JDBC and PostgreSQL

Amn Ojee Uw <amnojeeuw@gmail.com> writes:

https://www.tutorialspoint.com/postgresql/postgresql_java.htm
In reference to the above web page, it reads :
The following Java code shows how to connect to an existing database. If
the database does not exist, then it will be created and finally a
database object will be returned.
True, the database file does not exist, but isn't JDBC supposed to
create it?

I think that web page is lying to you. JDBC cannot promise to
create a database for you, because (a) if the given database
doesn't exist, it would have to guess at some other database
to connect to, with no certainty of success; and (b) even if
it manages to connect to the server, there's no certainty
that you'd have permissions to create a new database.
So I don't believe any JDBC driver would even try.

regards, tom lane

#3Chuck Davis
cjgunzel@gmail.com
In reply to: Amn Ojee Uw (#1)
Re: My 1st JDBC and PostgreSQL

Postgresql is a sophisticated database server. You can do what you're
attempting with something like Derby at the connection. But with
Postgresql "you get what you pay for".
1) Insall Postgresql
2) start the database
3) use the interface app psql to create a database;
4) load the JDBC driver in your client and connect.
5) manipulate the database via the JDBC driver.

All these steps are explained quite nicely in the Postgresql documentation
you can find at the web site. The JDBC site is separate but a Google
search will find it for you.

On Wed, Jul 19, 2023 at 5:37 PM Amn Ojee Uw <amnojeeuw@gmail.com> wrote:

Show quoted text

Following the example in :
https://www.tutorialspoint.com/postgresql/postgresql_java.htm
I wrote the bellow method :

public void connectToDatabase() throws ClassNotFoundException,
SQLException {
try {
this.perr(this.getDatabaseClass()); //
org.postgresql.Driver = Class
this.perr(this.getDatabaseUrl()); //
jdbc:postgresql://localhost:5432/sara.pgdb = url
this.perr(this.getUserID()); // chispa = user
this.perr(this.getUserPassword()); // 8UUKZW = password

Class.forName(this.getDatabaseClass().toString());
conn =
DriverManager.getConnection(this.getDatabaseUrl().toString(),
this.getUserID().toString(),
this.getUserPassword().toString() );
} catch (final SQLException | ClassNotFoundException e) {
throw e;
}
}

However, it throws an exception that reads :
Exception in thread "main" org.postgresql.util.PSQLException: FATAL:
database "sara.pgdb" does not exist

In reference to the above web page, it reads :
The following Java code shows how to connect to an existing database. If
the database does not exist, then it will be created and finally a
database object will be returned.

True, the database file does not exist, but isn't JDBC supposed to
create it?

Any help would be much appreciated.

#4Jeffrey Walton
noloader@gmail.com
In reply to: Amn Ojee Uw (#1)
Re: My 1st JDBC and PostgreSQL

On Wed, Jul 19, 2023 at 8:37 PM Amn Ojee Uw <amnojeeuw@gmail.com> wrote:

Following the example in :
https://www.tutorialspoint.com/postgresql/postgresql_java.htm
I wrote the bellow method :

public void connectToDatabase() throws ClassNotFoundException,
SQLException {
try {
this.perr(this.getDatabaseClass()); //
org.postgresql.Driver = Class
this.perr(this.getDatabaseUrl()); //
jdbc:postgresql://localhost:5432/sara.pgdb = url
this.perr(this.getUserID()); // chispa = user
this.perr(this.getUserPassword()); // 8UUKZW = password

Class.forName(this.getDatabaseClass().toString());
conn =
DriverManager.getConnection(this.getDatabaseUrl().toString(),
this.getUserID().toString(),
this.getUserPassword().toString() );
} catch (final SQLException | ClassNotFoundException e) {
throw e;
}
}

However, it throws an exception that reads :
Exception in thread "main" org.postgresql.util.PSQLException: FATAL:
database "sara.pgdb" does not exist

In reference to the above web page, it reads :
The following Java code shows how to connect to an existing database. If
the database does not exist, then it will be created and finally a
database object will be returned.

True, the database file does not exist, but isn't JDBC supposed to
create it?

If you are not married to tutorialspoint.com gear, then you can get
the Chinook database for testing. Chinook is the free/open source
alternative to Microsoft's Northwind database. See
https://github.com/lerocha/chinook-database .

Jeff

#5Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Chuck Davis (#3)
Re: My 1st JDBC and PostgreSQL

On 7/19/23 18:11, Chuck Davis wrote:

Postgresql is a sophisticated database server.  You can do what you're
attempting with something like Derby at the connection.  But with
Postgresql "you get what you pay for".

Not sure what "you get what you pay for" means in this context?

My take is you are differentiating between embedded databases such as
Derby and SQLite which are tied to a specific client and client/server
databases like Postgres and MySQL which stand alone and are connected to
by any number of clients.

1) Insall Postgresql
2) start the database
3) use the interface app psql to create a database;
4) load the JDBC driver in your client and connect.
5) manipulate the database via the JDBC driver.

All these steps are explained quite nicely in the Postgresql
documentation you can find at the web site.  The JDBC site is separate
but a Google search will find it for you.

--
Adrian Klaver
adrian.klaver@aklaver.com

#6Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Amn Ojee Uw (#1)
Re: My 1st JDBC and PostgreSQL

On 7/19/23 17:37, Amn Ojee Uw wrote:

Following the example in :
https://www.tutorialspoint.com/postgresql/postgresql_java.htm

Avoid the site above it will lead you down many false paths.

--
Adrian Klaver
adrian.klaver@aklaver.com

#7Chuck Davis
cjgunzel@gmail.com
In reply to: Adrian Klaver (#5)
Re: My 1st JDBC and PostgreSQL

You get the value you're willing to work for as a general rule. It takes
more effort to admin a real SQL server than an easy embedded DB. Your
interpretation is spot on.

On Thu, Jul 20, 2023 at 8:18 AM Adrian Klaver <adrian.klaver@aklaver.com>
wrote:

Show quoted text

On 7/19/23 18:11, Chuck Davis wrote:

Postgresql is a sophisticated database server. You can do what you're
attempting with something like Derby at the connection. But with
Postgresql "you get what you pay for".

Not sure what "you get what you pay for" means in this context?

My take is you are differentiating between embedded databases such as
Derby and SQLite which are tied to a specific client and client/server
databases like Postgres and MySQL which stand alone and are connected to
by any number of clients.

1) Insall Postgresql
2) start the database
3) use the interface app psql to create a database;
4) load the JDBC driver in your client and connect.
5) manipulate the database via the JDBC driver.

All these steps are explained quite nicely in the Postgresql
documentation you can find at the web site. The JDBC site is separate
but a Google search will find it for you.

--
Adrian Klaver
adrian.klaver@aklaver.com