下面要给大家分享的是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工具网来进行了解哦。
推荐阅读: