簡體   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