下面要给大家分享的是java利用hibernate获取所连接的数据库信息的相关内容,对这个方面有疑问的小伙伴可以来看一下,有具体的分析哦。
需求:针对不同的数据库,做不同的处理
获取所连接的数据库是什么,oracle?mysql?sql?server? 基础方法。
public String getDatabaseProductName() { String dpName = ""; Session session = null; try { session = this.getHibernateTemplate() .getSessionFactory() .openSession(); DatabaseMetaData dbData = session.connection() .getMetaData(); dpName = dbData.getDatabaseProductName() .toLowerCase(); } catch (SQLException e) { log.error(e.getMessage(), e); } finally { if (session != null) { session.close(); session = null; } } return dpName; }
调用方法:
String dbName = this.baseDao.getDatabaseProductName(); if (dbName.indexOf("oracle") > -1) { //oracle //做oracle的处理 } else if (dbName.indexOf("mysql") > -1) { //做mysql的处理 } else if (dbName.indexOf("sql server") > -1) { //做sql server的处理 }
假如,你想要进一步的获取用户实例名呢?应该怎样做?
public String getDBName(String dbType) { String dbName = ""; Session session = null; try { session = this.getHibernateTemplate() .getSessionFactory() .openSession(); DatabaseMetaData dbData = session.connection() .getMetaData(); if ("oracle".equals(dbType)) { dbName = dbData.getUserName(); } else if ("mysql".equals(dbType)) { String url = dbData.getURL(); String str = url.substring(0, url.indexOf("?")); dbName = str.substring(str.lastIndexOf("/") + 1); } else if ("sqlserver".equals(dbType)) { dbName = dbData.getUserName(); } } catch (SQLException e) { log.error(e.getMessage(), e); } finally { if (session != null) { session.close(); session = null; } } return dbName.toLowerCase(); }
调用方法:
String test = baseDao.getDBName("mysql");
以上的内容你都清楚了吧,更多的java常见问题及解决方法,可以继续关注奇Q工具网来进行了解哦。
推荐阅读: