繁体   English   中英

获取执行JDBC插入/更新/删除后使用的表名

[英]Obtain a table name used after executing JDBC Insert/Update/Delete

我们的应用程序执行用户提供给我们的插入/更新/删除SQL。 我们不知道SQL是什么样子。 是否存在一种方法,可以在执行插入/更新/删除操作后不从SQL本身解析表名的情况下获取受影响的表?

注意:显然,由于我们正在调用stmt.executeUpdate()没有ResultSet / ResultSetMetaData可用于我们。

问题:执行插入/更新/删除SQL后,是否存在确定受影响的表的方法?

它可能取决于您的特定数据库系统,但是这里有一些想法:

如果可以获得表的某一列,则可以遍历所有列并存储使用的表。

如果有连接对象,则检查所有表:

DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString(3));
}

如果您有权访问SQL查询,则可以扫描FROM SQL关键字以识别表,和/或进一步扫描该语句,或者在该语句上使用SQL分析器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM