Java 获取执行JDBC Insert/Update/Delete后使用的表名
我们的应用程序执行用户提供给我们的Insert/Update/Delete SQL。我们现在还不知道SQL是什么样子。是否有一种方法可以在执行Insert/Update/Delete后获得受影响的表,而无需从SQL本身解析表名 注意:显然,由于我们正在调用Java 获取执行JDBC Insert/Update/Delete后使用的表名,java,sql,jdbc,Java,Sql,Jdbc,我们的应用程序执行用户提供给我们的Insert/Update/Delete SQL。我们现在还不知道SQL是什么样子。是否有一种方法可以在执行Insert/Update/Delete后获得受影响的表,而无需从SQL本身解析表名 注意:显然,由于我们正在调用stmt.executeUpdate()noResultSet/ResultSetMetaData,因此我们可以使用 问题:是否存在一种方法来确定执行Insert/Update/Delete SQL后哪个表受到影响?这可能取决于您的特定数据库系
stmt.executeUpdate()
noResultSet
/ResultSetMetaData
,因此我们可以使用
问题:是否存在一种方法来确定执行Insert/Update/Delete 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分析器。这可能取决于您的特定数据库系统,但以下是一些想法:
如果可以获取列的表,则可以迭代所有列并存储使用的表
如果有连接对象,则可以检查所有表:
DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
如果您有权访问SQL查询,则可以扫描
FROM
SQL关键字以识别表,和/或进一步扫描语句或对语句使用SQL分析器。扫描/解析不是选项。如何迭代删除SQL中的所有列?扫描/解析不是选项。如何迭代deletesql中的所有列?