获取连接的mysql数据库名称(JDBC)

2024-04-16

如何从连接对象中获取数据库名称

try {
    this.ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/amger");
} catch (NamingException ne) {
}
Connection conObj = ds.getConnection();

如何从 con 获取数据库名称


从 JDBC Connection 对象本身获取数据库名称的最直接方法可能是通过getCatalog() method:

连接#getCatalog() http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#getCatalog()

然而,正如 Konstantin 在下面的评论中指出的那样,如果当前的 MySQL 数据库通过发出USE dbname陈述。

getCatalog()在以下应用程序中可能仍然有用

  • 不更改数据库,或者
  • 通过使用“JDBC 方式”做事setCatalog()更改当前数据库,

但对于 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);
}

产生以下结果:

getCatalog() returns: myDb
           Executing: USE master
getCatalog() returns: master
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取连接的mysql数据库名称(JDBC) 的相关文章

随机推荐

  • 具有相同空间比例的 geom_sf 的小型多个地图

    我想使用多个小地图绘制一个图形ggplot2 geom sf 这里的挑战是如何保持所有地图在图像中居中并处于相同的空间比例 这是问题 下面是可重现示例的数据 一个简单的地图使用facet wrap将所有多边形置于相同的空间尺度 但它们不居中
  • flutter ios 应用程序在 xcode 上运行,但无法在 vscode 和 android studio 上运行

    我的应用程序在 android 和 ios 上完美运行 仅使用 xcode 由于某种原因 当我使用 vsCode 或 Android studio 运行它时 它返回一个错误 Launching lib main dart on iPhone
  • 动态透视查询,无需将查询存储为字符串

    我完全熟悉链接中用于执行动态数据透视查询的以下方法 是否有另一种方法可以执行动态透视 而无需将查询存储为字符串并在其中插入列字符串 http www simple talk com community blogs andras archiv
  • 无法运行 Hyperloop 项目

    我已经从 master 下载了最新的 SDK 如下所述 http builds appcelerator com master http builds appcelerator com master 我还从这里下载了最新的 Hyperloo
  • 忽略 shell 脚本中的特定错误

    我有一小段 shell 脚本 它可能会引发许多错误 我当前将脚本设置为在出现所有错误时全局停止 不过我希望这个小部分略有不同 这是片段 recover database using backup controlfile until canc
  • C# 中的辅助方法:静态还是非静态?

    我有一个包含一些函数的类 这些函数实际上只是客户端代码可以使用其他公共访问器属性 方法自行完成的 帮助器 方法 并且我尚未决定是否应该使用 getter 实例将它们定义为属性方法 或将实例作为参数的静态方法 此外 我还从类中提取了一个接口
  • 如何使用 selenium webdriver 检查弹出窗口是否存在?

    我正在一个应用程序上运行链接测试 其中一个链接会弹出一个登录弹出窗口 有办法检查吗 我尝试将其视为警报 但没有成功 try WebDriverWait wait new WebDriverWait driver 2 wait until E
  • 图表轴标签格式VBA设置

    我正在编写 vb 脚本来生成图表 在 X 轴上有日期 在 Y 轴上有温度 在 X 轴上 我想以 dd mm 格式显示时间 我的数据如下所示 2014 06 17 01 00 2014 06 17 02 00 2014 06 17 03 00
  • MainWindow 对象没有属性“connect”

    我想知道是否有人可以帮助我解决有关 PyQt5 中插槽连接的问题 下面的代码片段将告诉你我的问题是什么 class MainWindow QMainWindow def init self super MainWindow self ini
  • 从 DialogFragment 设置状态栏颜色

    我正在创建一个动态更改状态栏颜色的应用程序 当从任何片段调用时 我在主 Activity 类中的方法都可以正常工作 片段放置在 Activity pager 中 public void setStatusBarColorIfPossible
  • 正在发生 mongoDB 写入,然后读取必须等待或不等待

    当 mongoDB 写入发生时 读取必须等待或不等待 当 mongoDB 要在 mongodb 中写入一些文档时 会发生写锁并且 其他线程尝试读取其他文档 那么它应该等待直到写锁释放或不释放 所有读锁和写锁之间是否存在依赖关系 来自docs
  • boost::Optional 到 bool 的转换

    如何防止该代码的最后一行编译 include
  • 如何从 openssl 生成的密钥生成 X.509 证书

    我有一个在 ec2 实例上运行的 Web 服务器 该实例在内部调用使用 Spring Boot 构建的 REST 服务器 现在 我正在尝试让此 REST 服务器在 SSL 下运行 这是我到目前为止所做的 1 使用此命令创建 CSR 和密钥文
  • 我该如何解决这个错误?字段从未分配并且始终具有空值[重复]

    这个问题在这里已经有答案了 我创建了 4 个 C 脚本 当我运行 2d unity 游戏时 我在控制台中看到此警告 Assets Scripts GameHandler cs 7 34 警告 CS0649 字段 GameHandler ca
  • 使用 spring-data-rest 定义路径“/{resourcename}/search/”的自定义方法

    我很困惑 我无法找到如何将自定义 搜索 方法与在 spring data rest 的帮助下加载的方法一起定义 您能回答我吗 该框架是否具有 开箱即用 的可能性 如果有的话 你能告诉我 在哪里可以找到它吗 为了更深入地了解我的情况 我描述了
  • Meteor.http.call 不允许 Access-Control-Allow-Origin

    当我尝试使用 Meteor 调用外部服务器进行 JSON 查询时Meteor http call GET 方法我收到错误消息 Access Control Allow Origin不允许 如何允许我的 Meteor 应用程序向其他服务器发出
  • Rails:最后以空值排序

    在我的 Rails 应用程序中 我多次遇到一个问题 我想知道其他人是如何解决的 我有某些记录 其中值是可选的 因此某些记录具有值 而某些记录对该列为空 如果我在某些数据库上按该列排序 则空值首先排序 而在某些数据库上 空值最后排序 例如 我
  • 使用假 DbContext 和 Autofixture 以及 Moq 进行测试

    所以请遵循这个例子 example http romiller com 2012 02 14 testing with a fake dbcontext 以及如何制作一个假的 DBContext 来测试我的测试 使用这个工作正常 Test
  • sqlite python 插入

    我以前问过类似的问题 这里是我想要实现的目标的详细解释 我有两个 sqlite 表table1 是标准表 具有服务器 id 状态等字段 table2 具有服务器 id 状态 数字 日志文件等字段 Table2 为空 Table1 有值 我正
  • 获取连接的mysql数据库名称(JDBC)

    如何从连接对象中获取数据库名称 try this ds DataSource new InitialContext lookup java comp env jdbc amger catch NamingException ne Conne