0

Java および PostgreSQL データベースとの接続に問題があります。JDBC4 Postgresql ドライバー、バージョン 9.2-1002ドライバーをダウンロードし、アプリケーションの ClassPath を適切に設定しました。私のコードは以下の通りです

import java.sql.*;

public class JavaPostGreSQLConnectivity
{
    public static void main(String[] args) 
    {
        DB db = new DB();        
        db.dbConnect("jdbc:postgresql://127.0.0.1:5432/TestDB", "postgres","pwd");
    }
}

class DB
{
    public DB() {}

    public void dbConnect(String db_connect_string, String db_userid, String db_password)
    {
        try
        { 
            Class.forName("org.postgresql.Driver");
            Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
            System.out.println("connected");

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
};

実行すると、以下のエラーが発生します

ここに画像の説明を入力

文句を言っているのか

Class.forName("org.postgresql.Driver");

その場合、ドライバー名は何になりますか? ただし、学習目的でこれに従いました。

しかし、もしそうなら

C:\Program Files (x86)\Java\jdk1.7.0\bin>java -cp C:\Users\pos
tgresql-9.2-1002.jdbc4.jar; JavaPostGreSQLConnectivity

connected

それは機能します。ドライバーをクラスパスに適切に配置したのに、ドライバーを再度明示的に言及する必要があるのはなぜですか? 別の方法はありますか (JAR ファイルをクラスパスに配置したいだけで、プログラムはそこから読み取る必要があります)。

前もって感謝します

4

1 に答える 1

2

ドライバー名はOKです。ドライバーの公式ドキュメントに記載されているものと同じです。したがって、ドライバーはクラスパスにありません。

あなたは言う:

私は [...] アプリケーションの ClassPath を適切に設定しました

一方、次のように呼び出すだけでプログラムを開始します。

java JavaPostGreSQLConnectivity

その場合、PG ドライバーはクラスパス上にありません。次のようなものを使用して手動で追加する必要があります

java -cp postgresql-jdbc4.jar JavaPostGreSQLConnectivity

編集入力中に質問が変更されたため、重複しています。

IDE でのみ jar を追加しました。これは、IDE がコードをコンパイルするのに役立ちます。IDE を使用してプログラムを開始すると、IDE によってクラスパスも設定されます。しかし、IDE から開始しないと、誰も正しいクラスパスを知らず、手動で設定する必要があります。

オプションは次のとおりです。

  • 常に IDE 経由で開始
  • クラスパスの設定を隠すバッチスクリプトを作成します(一般的な解決策)
  • 環境変数を設定しCLASSPATHます (他の Java アプリケーションではスケーリングしません)
  • 「実行可能Jar」を作成し、そこにクラスパスを設定します。(その用語を使用してこのサイトを検索してください)。
  • jar を JVM が自動的に取得する場所 ( lib/extJRE のディレクトリなど) に配置します。しかし、JRE/JDK ライブラリを汚染することは最悪の選択肢です。

注: これはすべて基本的な Java の知識であり、PostgreSQL とは関係ありません。

于 2012-12-15T10:54:55.453 に答える