簡體   English   中英

PostgreSQL - 安裝JDBC驅動程序

[英]PostgreSQL - Installing JDBC driver

我正在努力解決如何在debian 6.0服務器上為PostgreSQL安裝JDBC驅動程序的問題。 我已將驅動程序.jar移動到以下目錄中:

/usr/local/pgsql/share/java/postgresql.jar. 

然后教程討論使用此代碼:

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

但是,因為我是postgreSQL的新手,所以我不知道應該把這行放在哪里,或者這是否正確。

我的問題是,如果沒有將jar文件移動到這個位置,為了在我的postgreSQL安裝上安裝JDBC驅動程序,我實際需要做些什么?


編輯:這是我的設置:

服務器1: Tomcat + SOLR

服務器2:帶有JDBC驅動程序的PostgreSQL

服務器1上的SOLR通過JDBC驅動程序在服務器2上查詢postgreSQL

最好將PostgreSQL驅動程序安裝到tomcat \\ lib文件夾中。 只需將驅動程序jar復制到PATH_TO_TOMCAT \\ lib即可

將事物添加到系統CLASSPATH不是一個好主意,因為你可以在類加載器地獄中結束。 這是一個如何在jar / classpath地獄中結束的例子。

  • 假設當前應用程序使用postgres 9.1並在系統CLASSPATH上設置驅動程序
  • 你決定在那個盒子上運行另一個應用程序,它與更新版本的postgres進行對話,比如版本9.2
  • 因為您正在使用系統類路徑應用程序2將最終使用舊驅動程序,因為SYSTEM類路徑往往優先於應用程序類路徑,除非應用程序啟動程序腳本將CLASSPATH =“”設置為清空系統類路徑或使用自定義類加載器那不做父級優先加載。

請參見http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

那個驅動程序必須在你的類路徑上。 您可以使用此命令

java -cp /usr/local/pgsql/share/java/postgresql.jar my.app.MainClass

或者您可以將庫復制到項目結構中。

然后你可以創建連接,因為教程說...

在IDE(Idea,Eclipse等)中,您需要將該路徑添加為庫。

或者,如果定義包含該變量的CLASSPATH變量,則可以從命令行編譯和執行。

export CLASSPATH=/usr/local/pgsql/share/java/postgresql.jar
javac -classpath $CLASSPATH MyDBApp.java
java -cp $CLASSPATH MyDBApp

安裝所有包:

# apt-get install libpostgresql-jdbc-java libpostgresql-jdbc-java-doc

要為所有用戶設置Java環境,請添加/ edit / etc / environment:

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
CLASSPATH=".:/usr/share/java/mysql.jar:/usr/share/java/postgresql-jdbc4.jar"

注意 :使用JDK更改/ usr / lib / jvm / java-8-openjdk-amd64

注意 :如果您更喜歡使用postgresql-jdbc3,請將/usr/share/java/postgresql-jdbc4.jar替換為/usr/share/java/postgresql.jar

使用以下代碼測試您的連接:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

class TestDB {

    /*

      /usr/share/java

      http://dev.mysql.com/doc/connector-j/5.1/en/

      https://jdbc.postgresql.org/documentation/documentation.html

    */

   static Connection conn = null;   

   public static void main(String[] args) {
      // PostgreSQL

      try {

         System.out.println("Loading Class org.postgresql.Driver");

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

         System.out.println("Loading org.postgresql.Driver Successful");

         String url = "jdbc:postgresql://localhost/database";

         Properties props = new Properties();

         props.setProperty("user","user");

         props.setProperty("password","password");

         props.setProperty("ssl","true");

         conn = DriverManager.getConnection(url, props); 

         // or

         url = "jdbc:postgresql://localhost/database?user=user&password=password&ssl=true";

         Connection conn = DriverManager.getConnection(url);

         // Do something with the Connection

         System.out.println("Test Connection Successful");

      } catch (SQLException ex) {

         // handle any errors

         System.out.println("SQLException: " + ex.getMessage());

         System.out.println("SQLState: " + ex.getSQLState());

         System.out.println("VendorError: " + ex.getErrorCode());

      } catch (ClassNotFoundException ex) {

         System.out.println("Class Not Found: " + ex.getMessage());

      }

   }

}

注意 :使用您的配置更改數據庫,用戶和密碼

http://www.garasiku.web.id/web/joomla/index.php/java/112-debian-jessie-installing-openjdk-8-mysql-jdbc-and-postgresql-jdbc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM