今天在工作中遇到一个业务:“在jdbc已经与数据库建立连接的情况下,需要在业务代码中获取到不同类型数据库的库名。”像大多数人一样,我首先想到的是通过jdbc连接的url来获取数据库名,例如mysql的jdbc连接url
jdbc:mysql://localhost:3306/test
oracle的jdbc连接url
jdbc:oracle:thin:@127.0.0.1:1521:orcl
显然,通过jdbc连接url是可以获取到数据库名的,但是通过这种方式获取库名首先需要通过不同的方式截取字符串,其次如果换做其他类型的如MongoDB、HBase等数据库,还要通过各自的截取方式来获取,因此这种方式很麻烦。于是乎,通过百度,搜到的大部分都是通过“show databases”查询出所有的数据库名,并不能解决以上业务。最终,总算找到了一个简单的方法,使用jdbc通过以下sql直接进行查询,目前只找到了获取mysql和oracle数据库名的方式
1.MySQL获取当前连接数据库名称
select database();
2.Oracle获取当前连接数据库名称
select name from v$database;
3.SQLServer获取当前连接数据库名称
Select Name From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)