我们的应用程序执行我们的用户提供给我们的插入/更新/删除SQL。我们不知道SQL之前的样子。在执行Insert / Update / Delete而不解析SQL本身的表名之前,是否存在获取哪个表受影响的方法?
注意:显然,由于我们正在致电stmt.executeUpdate()
,我们无法使用ResultSet
/ ResultSetMetaData
。
问题:执行插入/更新/删除SQL后,是否存在确定哪个表受影响的方法?
答案 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分析器。