java业务逻辑,利用hibernate获取所连接的数据库信息
1、本人程序架构是springMVC+hibernate,这次的需求是要针对不同的数据库,做不同的处理。
2、获取所连接的数据库是什么,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; }
3、调用方法
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的处理 }
4、题外话,如果想进一步获取用户实例名呢?
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(); }
5、题外话调用方式
String test = baseDao.getDBName("mysql");

浙公网安备 33010602011771号