0
我想通過java刪除我的數據庫中的所有函數和過程。 我當前的代碼是像這樣:getProcedures和getFunctions返回相同的ResultSet
Class.forName(driver);
Connection conn = getConnectionToDB();
String itemName;
ResultSet rs = getResultSetForItem(item);
String upperCaseItem = item.toUpperCase();
while (rs.next()) {
itemName = rs.getString(upperCaseItem + "_NAME");
// Procedure and function names come with a grouping ID, remove it
if (item.equals("procedure") || item.equals("function"))
itemName = itemName.substring(0, itemName.indexOf(";"));
stmt = conn.createStatement();
stmt.executeUpdate(query + " " + itemName);
}
如果產品一旦「功能」和一次「程序」。此外,查詢變量正確設置爲執行相應的「DROP FUNCTION」或「DROP PROCEDURE」。
getResuletSetForItem的方法:
Class.forName(driver);
Connection conn = getConnectionToDB();
DatabaseMetaData md = conn.getMetaData();
switch (item.toLowerCase()){
case "function":
rs = md.getFunctions("LDMS", "dbo", "%");
break;
case "procedure":
rs = md.getProcedures("LDMS", "dbo", "%");
break;
}
return rs;
會發生什麼事,我得到的結果集,作爲根據我所要求的功能或程序。但它也返回其他類型的記錄(意思是,如果我要求一個ResultSet的函數,我也會得到這些程序)。
這當然會導致例外,當我嘗試,例如,執行「DROP FUNCTION X」其中X實際上是一個存儲過程。