跳轉到內容

XQuery/XQuery SQL 模組

來自華夏公益教科書

您想在 XQuery 程式碼中執行 SQL 查詢。

eXistdb 提供了一個用於執行 SQL 查詢的模組。

配置步驟

[編輯 | 編輯原始碼]
  1. 啟用模組
  2. 配置您的連線字串
  3. 執行測試查詢

啟用 SQL 模組

[編輯 | 編輯原始碼]

您的第一步是啟用 SQL 模組。為此,您必須從 EXIST_HOME 目錄中的 conf.xml 檔案中取消註釋以下行

<module class="org.exist.xquery.modules.sql.SQLModule"
   uri="http://exist-db.org/xquery/sql" />

在 eXist 1.5 中,還有一個未記錄的 Oracle 模組。

<module class="org.exist.xquery.modules.oracle.OracleModule"
     uri="http://exist-db.org/xquery/oracle" />

安裝驅動程式庫

[編輯 | 編輯原始碼]

SQL 模組使用 JDBC 進行其資料庫連線,因此對於您想要連線的每種資料庫型別,都需要一個 JDBC 驅動程式。JDBC 驅動程式應放置在 EXIST_HOME/lib/user 中。


完成後,您必須重新啟動伺服器。您現在應該在函式列表中看到額外的 SQL 模組文件,並且在連線函式呼叫中使用的驅動程式類應該被找到。

執行查詢

[編輯 | 編輯原始碼]

為了執行查詢,您必須執行兩個步驟

  1. 獲取到資料庫的連線
  2. 執行查詢

有五種不同的函式可以獲取到資料庫的連線,但只有一個函式可以執行查詢。

連線字串允許您使用適當的使用者名稱和密碼連線到正確的伺服器。

在最基本的形式中,get-connection 函式的格式如下

  sql:get-connection('JavaClass', 'JDBC-Connection-URL')

此格式假設您可以將資料庫的登入名和密碼直接放在 JDBC 連線 URL 中。

如果您無法做到這一點,則帶有使用者名稱和密碼的連線字串的格式為

  sql:get-connection('JavaClass', 'JDBC-Connection-URL', 'username', 'password')

請注意,某些系統也會將使用者名稱和密碼放在 JDBC 連線字串中。

例如,在 MySQL 中,字串可能是

  sql:get-connection("com.mysql.jdbc.Driver", 'jdbc:mysql:///db1', 'mysql-user-name', 'mysql-password')

在 Oracle 中,字串可能是

  sql:get-connection('oracle.jdbc.OracleDriver', 'jdbc:oracle:thin:[USER/PASSWORD]@//[HOST][:PORT]/SERVICE", 'jdbc-connection-string', 'mysql-user-name', 'mysql-password')
let $connection := sql:get-connection("com.mysql.jdbc.Driver", 'jdbc:mysql:///db1', 'mysql-user-name', 'mysql-password')
let $q1 := "select * from table1"
return sql:execute( $connection, $q1, fn:true() )

eXistdb 文件

華夏公益教科書