是否可以使用java找到PostgreSQL的版本,还可以使用java代码启动PostgreSQL服务器?
要查找版本,我们有PG_VERSION文件,该文件在PostgreSQL数据目录下有版本但我们不能依赖它,因为可以编辑该文件。请帮帮我。任何建议都非常感谢。
答案 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 --version
或pg_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());
}
}
}