使用java查找版本并启动PostgreSQL
是否可以使用java查找PostgreSQL版本,并使用java代码启动PostgreSQL服务器使用java查找版本并启动PostgreSQL,java,postgresql,Java,Postgresql,是否可以使用java查找PostgreSQL版本,并使用java代码启动PostgreSQL服务器 要查找版本,我们有PG_版本文件,该文件的版本位于PostgreSQL数据目录下,但我们不能依赖它,因为该文件可以编辑。请帮帮我。非常感谢您的建议 快速谷歌搜索显示查询: select version(); 通过JDBC运行它,您仍然拥有java。 至于运行postgres服务器本身,我认为旧的方式Runtime.exec/ProcessBuilder可以完成这项工作。你可能想在它上面创建一些脚
要查找版本,我们有PG_版本文件,该文件的版本位于PostgreSQL数据目录下,但我们不能依赖它,因为该文件可以编辑。请帮帮我。非常感谢您的建议 快速谷歌搜索显示查询:
select version();
通过JDBC运行它,您仍然拥有java。
至于运行postgres服务器本身,我认为旧的方式Runtime.exec/ProcessBuilder
可以完成这项工作。你可能想在它上面创建一些脚本,但是我想,它应该是这样工作的,没有其他方法了
如果您在linux机器上运行,也许您应该将服务器作为服务安装并分别运行它,但是从Java的角度来看(如果您真的想从Java运行它),它仍然是对外部进程的调用
希望这有助于快速谷歌搜索揭示查询:
select version();
通过JDBC运行它,您仍然拥有java。
至于运行postgres服务器本身,我认为旧的方式Runtime.exec/ProcessBuilder
可以完成这项工作。你可能想在它上面创建一些脚本,但是我想,它应该是这样工作的,没有其他方法了
如果您在linux机器上运行,也许您应该将服务器作为服务安装并分别运行它,但是从Java的角度来看(如果您真的想从Java运行它),它仍然是对外部进程的调用
希望这有帮助如果编辑了
PG\u版本
,服务器将无法启动。不要那样做。一般来说,PostgreSQL数据目录禁止直接编辑
在运行时,您可以使用SELECT version()
获取正在运行的服务器的版本
可以使用pg_ctl
启动和停止服务器。您可以检查服务器二进制文件的版本,无论服务器是否正在运行postgres--version
或pg_ctl--version
二进制文件和datadir的位置可以根据服务器的安装方式进行控制。如果编辑了
PG\u版本
,服务器将无法启动。不要那样做。一般来说,PostgreSQL数据目录禁止直接编辑
在运行时,您可以使用SELECT version()
获取正在运行的服务器的版本
可以使用pg_ctl
启动和停止服务器。您可以检查服务器二进制文件的版本,无论服务器是否正在运行postgres--version
或pg_ctl--version
二进制文件和datadir的位置可以根据服务器的安装方式进行控制。您还可以使用找到服务器的版本。它具有用于获取服务器信息的帮助器方法
getDatabaseProductVersion()
,getDatabaseMajorVersion()
,getDatabaseMinorVersion()
将为您提供数据库服务器版本 您还可以使用找到服务器的版本。它具有用于获取服务器信息的帮助器方法getDatabaseProductVersion()
,getDatabaseMajorVersion()
,getDatabaseMinorVersion()
将为您提供数据库服务器版本 运行查询:选择版本()
将为您提供运行查询的posgresql的确切版本:select version()
将为您提供posgresql的确切版本。您还可以使用
数据库元数据接口。它更为通用,不仅适用于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());
}
}
}
您还可以使用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());
}
}
}
命令postgres--version和pg_ctl--version仅在Unix/Linux中工作。我们有没有在Windows或Mac中执行相同操作的命令?呃。。。这些命令在MacOSX或Windows上都能正常工作。您的困惑可能是由于可执行文件不在路径上
?使用完整路径调用它们,如C:\Program Files\PostgreSQL\9.2\bin\postgres.exe-version
,或者将安装目录添加到路径
,这样您就可以调用它们,而无需在命令行上指定路径。这不是特定于PostgreSQL的,这只是非常基本的计算机/操作系统的东西。命令postgres--version和pg_ctl--version都只在Unix/Linux中工作。我们有没有在Windows或Mac中执行相同操作的命令?呃。。。这些命令在MacOSX或Windows上都能正常工作。您的困惑可能是由于可执行文件不在路径上
?使用完整路径调用它们,如C:\Program Files\PostgreSQL\9.2\bin\postgres.exe-version
,或者将安装目录添加到路径
,这样您就可以调用它们,而无需在命令行上指定路径。这不是特定于PostgreSQL的,这只是非常基本的计算机/操作系统。