如何从Java中的数据源名称获取sqlserver数据库名称

问题描述:

正如标题中所指定的,我想在sqlserver中获取数据库名称,我知道的所有信息都是数据源名称,登录名/密码以获取Connection对象,请显示一些关于如何在java中正确检索数据库名称的指针,谢谢!如何从Java中的数据源名称获取sqlserver数据库名称

即使

+0

数据库名称是什么意思?您是指MS-SQL Server实例名称还是其他名称? –

+0

我的意思是数据库实例名,如下图所示:微软SQL Server ODBC驱动程序版本06.00.6002 数据源名称:SM9 数据来源说明: 服务器:*** 数据库:SM9 数据加密:没有 – Even

从连接对象获取的java.sql.DatabaseMetaData一个实例。

数据库的名称可以通过getCatalogs()getSchemas()方法获得(取决于JDBC驱动程序的供应商)。

ResultSet rs=cn.getMetaData().getSchemas(); 
while(rs.next()) { 
    System.out.println(rs.getString(1)); 
} 

或者使用Connection.getCatalog()Connection.getSchema()方法。

如果您有兴趣获得Oracle数据库服务器的host nameip address

ResultSet rs=st.executeQuery("select UTL_INADDR.GET_HOST_NAME from dual"); 
while(rs.next()) 
    System.out.println(rs.getString(1)); 

您可以使用:

con.getClientInfo() 

得到的所有信息/数据库的属性,然后指向interest.As的特定属性对你的情况con.getClientInfo(“数据库”)应该做这项工作。 这适用于我在sql服务器。

+0

根据https://technet.microsoft.com/en-us/library/dd571353%28v=sql.105%29.aspx该方法始终返回null,因为MS驱动程序不支持客户端属性。 – anydoby

public List<String> getServerDataBaseNameList() { 
    List<String> dataBaseNameList = new ArrayList<String>(); 
    try { 
     ResultSet resultSet = con.getConnectionMetaData().getCatalogs(); 
     if (resultSet == null) { 
      return null; 
     } 
     while (resultSet.next()) { 
      dataBaseNameList.add(resultSet.getString(1)); 
     } 
     return dataBaseNameList; 
    } catch (SQLException e) { 
     logger.error("Error during execute select query for fetch server database name"); 
    } 
    return null; 
}