用java查找版本并启动PostgreSQL

时间:2012-10-26 05:47:12

标签: java postgresql

是否可以使用java找到PostgreSQL的版本,还可以使用java代码启动PostgreSQL服务器?

要查找版本,我们有PG_VERSION文件,该文件在PostgreSQL数据目录下有版本但我们不能依赖它,因为可以编辑该文件。请帮帮我。任何建议都非常感谢。

5 个答案:

答案 0 :(得分:2)

快速谷歌搜索显示查询:

select version();

通过JDBC运行它,无论如何你都有java。 至于运行postgres服务器本身,我认为旧的方式Runtime.exec/ProcessBuilder将完成这项工作。你可能想在它上面创建一些脚本,但是它的工作方式,我猜,没有别的办法。

如果你在linux机器上运行,也许你应该将服务器作为服务安装并分别运行它,但是从Java的角度来看(如果你真的想从java运行它)它仍然是外部的调用过程

希望这有帮助

答案 1 :(得分:2)

您还可以使用DatabaseMetaData找到服务器的版本。它有辅助方法来获取有关服务器的信息。 getDatabaseProductVersion()getDatabaseMajorVersion()getDatabaseMinorVersion()将为您提供数据库服务器版本。

答案 2 :(得分:0)

如果编辑PG_VERSION,服务器将无法启动。不要那样做。一般来说,PostgreSQL数据目录是直接编辑的禁区。

在运行时,您可以使用SELECT version()来获取正在运行的服务器的版本。

可以使用pg_ctl启动和停止服务器。您可以检查服务器二进制文件的版本,无论服务器是否正在运行postgres --versionpg_ctl --version

您可以根据安装服务器的方式控制二进制文件和数据库的位置。

答案 3 :(得分:0)

运行查询:选择版本()
会给你posgresql的确切版本

答案 4 :(得分:0)

您还可以使用DatabaseMetaData界面。它更为通用,不仅适用于postgreSQL,而且只为数据库版本提供更多功能。 以下是如何使用它的示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

/**
 * @author Binyamin Regev on on 30/11/2016.
 * @version 1.0
 * @since 1.8
 */

public class DatabaseMetaDataHelper {

    static Connection connection = null;
    static DatabaseMetaData metadata = null;


    public DatabaseMetaDataHelper() throws SQLException{

        boolean success = initJDBCDriver();
        if (!success) { throw new SQLException("INIT JDBC DRIVER FAILED!"); }

        success = connectToDatabase();
        if (!success) { throw new SQLException("Connect to database FAILED"); }

        connection = databaseConnection.getConnection();

        try {
            metadata = databaseConnection.getConnection().getMetaData();
        } catch (SQLException e) {
            System.err.println("There was an error getting the metadata: " + e.getMessage());
            e.printStackTrace();
        }
    }

    public boolean initJDBCDriver() {
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("Where is your PostgreSQL JDBC Driver? Include in your library path!");
            e.printStackTrace();
            return false;
        }

        System.out.println("PostgreSQL JDBC Driver Registered!");
        return true;
    }

    public boolean connectToDatabase() {
        try {
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://127.0.0.1:5432/postgres",
                    "postgres",
                    "admin");

        } catch (SQLException e) {
            System.out.println("Connection Failed! Check output console");
            e.printStackTrace();
            return false;
        }

        if (connection == null) {
            System.out.println("Failed to make connection!");
            return false;
        }

        System.out.println("You made it, take control your database now!");
        return true;
    }

    public static Connection getConnection() {
        return connection;
    }

    public static String getDatabaseProductName() {
        try {
            return metadata.getDatabaseProductName();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String getDriverName() {
        try {
            return metadata.getDriverName();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String getUserName() {
        try {
            return metadata.getUserName();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String getDatabaseProductVersion() {
        try {
            return metadata.getUserName();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String getDriverVersion() {
        try {
            return metadata.getDriverVersion();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String getURL() {
        try {
            return metadata.getURL();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static int getDriverMinorVersion() {
        return metadata.getDriverMinorVersion();
    }

    public static int getDriverMajorVersion() {
        return metadata.getDriverMajorVersion();
    }

    public static int getDatabaseMinorVersion() {
        try {
            return metadata.getDatabaseMinorVersion();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return -1;
    }

    public static int getDatabaseMajorVersion() {
        try {
            return metadata.getDatabaseMajorVersion();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return -1;
    }

    public static int getJDBCMajorVersion() {
        try {
            return metadata.getJDBCMajorVersion();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return -1;
    }

    public static int getJDBCMinorVersion() {
        try {
            return metadata.getJDBCMinorVersion();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return -1;
    }

    public static void main(String[] args) {
        try {
            DatabaseMetaDataHelper helper = new DatabaseMetaDataHelper();
            int result = helper.connectToDatabase();

            System.out.println("Database product name = " + getDatabaseProductName());
            System.out.println("Database product version = " + getDatabaseProductVersion());
            System.out.println("Database User name = " + getUserName());
            System.out.println("Driver name = " + getDriverName());
            System.out.println("Driver version = " + getDriverVersion());
            System.out.println("URL = " + getURL());
            System.out.println("Driver major version = " + getDriverMajorVersion());
            System.out.println("Driver minor version = " + getDriverMinorVersion());
            System.out.println("Databse major version = " + getDatabaseMajorVersion());
            System.out.println("Databse minor version = " + getDatabaseMinorVersion());
            System.out.println("JDBC major version = " + getJDBCMajorVersion());
            System.out.println("JDBC minor version = " + getJDBCMinorVersion());

            /*
             * Print all the tables of the database scheme,
             * with their names and structure
             */
            getColumnsMetadata(getTablesMetadata());
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            System.err.println("There was an error retrieving the metadata properties: "+ e.getMessage());
        }
    }
}