java.lang.Object com.ibm.etools.xmltosql.XMLToSQL
public class XMLToSQL extends Object
XMLToSQL 會利用 XML 文件來插入、更新或刪除資料庫表格中的列。XML 結構至表格結構之間的對映,會根據一組簡單的對映規則而定。以下 XML 片段說明了這些對映規則:
<rootElement> <EMPLOYEE> <FIRSTNAME>CHRISTINE</FIRSTNAME> <LASTNAME>HAAS</LASTNAME> </EMPLOYEE> <EMPLOYEE> <FIRSTNAME>MICHAEL</FIRSTNAME> <LASTNAME>THOMPSON</LASTNAME> </EMPLOYEE> ... </rootElement>
建立有效 XML 文件的好方法,是先利用 SQLToXML 程式庫產生一個 XML 文件,再修改它以提供要用於更新的新值。您也可以在撰寫使用 XMLToSQL 程式庫的程式碼之前,先利用「XML 至 SQL」精靈對 XML 文件執行單元測試以進行驗證。
建構子 | 說明 |
---|---|
XMLToSQL(SQLProperties) | 這是唯一建構子。 |
方法 | 說明 |
---|---|
void addToKeyColumns(String) | 加入索引鍵直欄名稱清單中,以用於建置 UPDATE 或 DELETE 的 where 子句。 |
void addToUpdateColumns(String) | 加入要更新或插入之直欄名稱的清單中。 |
void execute(Document, Boolean) | 從 DOM 文件更新表格。 |
void execute(InputStream) | 從 XML 輸入串流更新表格。 |
void execute(InputStream, Boolean) | 從 XML 輸入串流更新表格。 |
void execute(String) | 從 XML 檔更新表格。 |
void execute(String, Boolean) | 從 XML 檔更新表格。 |
void finalize() | 如果這是內部建立的,則關閉連線。 |
Vector getFailedStatements() | 傳回執行期間失敗之 SQL 陳述式的集合。 |
String getTableName(InputStream) | 傳回要更新的資料庫表格名稱。 |
String getTableName(String) | 傳回要更新的資料庫表格名稱。 |
void setConnection(Connection) | 提供要用來更新表格的 JDBC 連線。 |
void setTrace(Boolean) | 設定追蹤旗標。 |
void setTrace(Boolean, PrintWriter) | 設定追蹤旗標。 |
Boolean updateMultipleRows(String, Vector) | 決定在任一 execute() 方法被呼叫之後,是否要更新多列。 |
public XMLToSQL(SQLProperties sqlProperties)
這是唯一建構子。更新資料庫表格所需的任何資訊都會透過 SQLProperties 提供。
public void addToKeyColumns(String columnName) throws Exception
加入索引鍵直欄名稱清單中,以用於建置 UPDATE 或 DELETE 的 where 子句。如果表格具有主鍵,則會使用這些主鍵直欄取代之。如果表格未定義任何主鍵直欄,這個方法會很有用,但是要注意的是,這種方式可能會不小心更新很多列。一個直欄不能既是索引鍵直欄,又是更新直欄。這個方法不會對 INSERT 產生任何影響。
public void addToUpdateColumns(String columnName) throws Exception
加入要更新或插入之直欄名稱的清單中。如果這個方法未在任何 execute() 方法之前被呼叫,除了索引鍵直欄之外的所有直欄都會由 UPDATE 或 INSERT 的 XMLToSQL 加入清單中。一個直欄不能既是索引鍵直欄,又是更新直欄。這個方法不會對 DELETE 產生任何影響。
public void execute(Document doc, Boolean continueOnSQLError) throws SQLException, ClassNotFoundException, IOException, SAXException, ParserConfigurationException
從 DOM 文件更新表格。根據 continueOnSQLError 的 Boolean 值,會套用不同的交易模式。如果這是 true,即使發生錯誤,還是會繼續更新剩下的列。在這個情況下,如果要得知哪些列失敗,您必須呼叫 getFailedStatements()。如果 continueOnSQLError 為 false,發生錯誤時會回復所有已處理的列。
public void execute(InputStream inputStream) throws SQLException, ClassNotFoundException, IOException, SAXException, ParserConfigurationException
從 XML 輸入串流更新表格。如果在更新列時發生錯誤,則會回復到目前為止所有已處理的列。
public void execute(InputStream inputStream, Boolean continueOnSQLError) throws SQLException, ClassNotFoundException, IOException, SAXException, ParserConfigurationException
從 XML 輸入串流更新表格。根據 continueOnSQLError 的 Boolean 值,會套用不同的交易模式。如果這是 true,即使發生錯誤,還是會繼續更新剩下的列。在這個情況下,如果要得知哪些列失敗,您必須呼叫 getFailedStatements()。如果 continueOnSQLError 為 false,發生錯誤時會回復所有已處理的列。
public void execute(String filename) throws SQLException, FileNotFoundException, ClassNotFoundException, IOException, SAXException, ParserConfigurationException
從 XML 檔更新表格。如果在更新列時發生錯誤,則會回復到目前為止所有已處理的列。
public void execute(String filename, Boolean continueOnSQLError) throws SQLException, FileNotFoundException, ClassNotFoundException, IOException, SAXException, ParserConfigurationException
從 XML 檔更新表格。根據 continueOnSQLError 的 Boolean 值,會套用不同的交易模式。如果這是 true,即使發生錯誤,還是會繼續更新剩下的列。在這個情況下,如果要得知哪些列失敗,您必須呼叫 getFailedStatements()。如果 continueOnSQLError 為 false,發生錯誤時會回復所有已處理的列。
public void finalize()
如果這是內部建立的,則關閉連線。如果是外部提供的連線(利用 setConnection()),則不會執行任何動作。 在執行 XMLToSQL 的記憶體回收時,JVM 會呼叫這個方法。
public Vector getFailedStatements()
傳回執行期間失敗之 SQL 陳述式的集合。這個方法僅當 continueOnError 旗標為 true 時才有意義。
public String getTableName(InputStream inputStream) throws IOException, SAXException, ParserConfigurationException
傳回要更新的資料庫表格名稱。這個方法提供的目的是要在執行 SQL 陳述式之前,決定來自 XML 輸入串流的表格名稱。這是為了方便使用任何使用者介面元件。
public String getTableName(String filename) throws IOException, SAXException, ParserConfigurationException
傳回要更新的資料庫表格名稱。這個方法提供的目的是要在執行 SQL 陳述式之前,決定來自 XML 輸入串流的表格名稱。這是為了方便使用任何使用者介面元件。
public void setConnection(Connection jdbcConnection)
提供要用來更新表格的 JDBC 連線。當應用程式要使用自己的連線管理機制(如連線儲存區)時,這個方法會很有用。如果這個方法未在任何 execute() 方法之前被呼叫,XMLToSQL 會利用來自 SQLProperties 的值建立自己的連線。
public void setTrace(Boolean flag)
設定追蹤旗標。如果旗標為 true,則要執行的 SQL 陳述式會印出到主控台上。預設值是關閉追蹤。
public void setTrace(Boolean flag, PrintWriter writer)
設定追蹤旗標。如果旗標為 true,則要執行的 SQL 陳述式會印出到寫出器上。依預設,追蹤設為 false。
public Boolean updateMultipleRows(String uri, Vector keys) throws Exception
判斷在呼叫任一 execute() 方法之後,是否要更新/刪除多列。當作業針對沒有任何主鍵的表格執行時,還是有機會在 UPDATE/DELETE 模式下變更多列。如果會從對應的來源 XML 元素影響單一列,這個方法會傳回 false;否則傳回 true。