如何从Java中的数据源名称获取sqlserver数据库名称
问题描述:
正如标题中所指定的,我想在sqlserver中获取数据库名称,我知道的所有信息都是数据源名称,登录名/密码以获取Connection对象,请显示一些关于如何在java中正确检索数据库名称的指针,谢谢!如何从Java中的数据源名称获取sqlserver数据库名称
即使
答
从连接对象获取的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 name
或ip 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;
}
数据库名称是什么意思?您是指MS-SQL Server实例名称还是其他名称? –
我的意思是数据库实例名,如下图所示:微软SQL Server ODBC驱动程序版本06.00.6002 数据源名称:SM9 数据来源说明: 服务器:*** 数据库:SM9 数据加密:没有 – Even