如何从连接对象获取数据库名称的名称
try {
this.ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/amger");
} catch (NamingException ne) {
}
Connection conObj = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)
如何从con获取该数据库名称
Gor*_*son 16
从JDBC Connection对象本身获取数据库名称的最简单方法可能是通过以下getCatalog()方法:
但是,正如Konstantin在下面的评论中指出的那样,如果通过发出USE dbname声明来更改当前的MySQL数据库,那么该值将不会改变.
getCatalog() 可能仍然在一个应用程序中有用
setCatalog()更改当前数据库做"JDBC方式" ,但是对于MySQL来说,SELECT DATABASE()整体使用似乎更安全.
另请注意,getCatalog()实际当前数据库之间的这种潜在差异取决于特定JDBC驱动程序的行为.出于好奇,我尝试了类似于Microsoft JDBC Driver 4.0 for SQL Server的东西,.getCatalog()并确实在运行USE dbname语句后立即意识到对当前数据库的更改.也就是代码
String connectionUrl = "jdbc:sqlserver://localhost:52865;"
+ "databaseName=myDb;" + "integratedSecurity=true";
try (Connection con = DriverManager.getConnection(connectionUrl)) {
System.out.println(String.format(
"getCatalog() returns: %s",
con.getCatalog()));
try (Statement s = con.createStatement()) {
System.out.println(" Executing: USE master");
s.execute("USE master");
}
System.out.println(String.format(
"getCatalog() returns: %s",
con.getCatalog()));
} catch (Exception e) {
e.printStackTrace(System.out);
}
Run Code Online (Sandbox Code Playgroud)
产生了以下结果:
getCatalog() returns: myDb
Executing: USE master
getCatalog() returns: master
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18846 次 |
| 最近记录: |