2009-05-04 92 views
2

我想获取我连接到SQL Server的数据库的名称。我试着这样做:如何获取我通过Hibernate连接的数据库名称?

Query query = session.createQuery("SELECT db_name()"); 
List<String> dbNames = query.list(); 

但是,我得到了以下错误:

[ERROR PARSER:35] *** ERROR: <AST>:0:0: unexpected end of subtree 
Exception in thread "main" java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.MethodNode 
\-[METHOD_CALL] MethodNode: '(' 
    +-[METHOD_NAME] IdentNode: 'db_name' {originalText=db_name} 
    \-[EXPR_LIST] SqlNode: 'exprList' 

我怎样才能得到我连接到数据库的名称?

回答

6

您可以:

  1. 创建一个本地的SQL查询,与session.createSQLQuery(...)。您可以使用uniqueResult()提取单行结果。

  2. Session获取JDBC Connection,并从数据库元数据中提取连接字符串。对于SQL Server,我相信您需要解析connection.getMetaData().getURL()以提取实际的数据库名称。

注意Session.connection()被视为过时,你应该使用Session.doWork()

+0

谢谢!我甚至没有考虑使用Session对象的Connection。 – Ascalonian 2009-05-05 11:25:01

相关问题