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

时间:2013-09-17 01:25:45

标签: java sql jdbc

我们的应用程序执行我们的用户提供给我们的插入/更新/删除SQL。我们不知道SQL之前的样子。在执行Insert / Update / Delete而不解析SQL本身的表名之前,是否存在获取哪个表受影响的方法?

注意:显然,由于我们正在致电stmt.executeUpdate(),我们无法使用ResultSet / ResultSetMetaData

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

1 个答案:

答案 0 :(得分:1)

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

如果您可以获取列的表,那么您可以迭代所有列并存储使用的表。

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

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

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