Thread: My 1st JDBC and PostgreSQL

My 1st JDBC and PostgreSQL

From
Amn Ojee Uw
Date:
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.




Re: My 1st JDBC and PostgreSQL

From
Tom Lane
Date:
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



Re: My 1st JDBC and PostgreSQL

From
Chuck Davis
Date:
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:
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.



Re: My 1st JDBC and PostgreSQL

From
Jeffrey Walton
Date:
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



Re: My 1st JDBC and PostgreSQL

From
Adrian Klaver
Date:
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




Re: My 1st JDBC and PostgreSQL

From
Adrian Klaver
Date:
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




Re: My 1st JDBC and PostgreSQL

From
Chuck Davis
Date:
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:
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