sql:connect
Returns an external object representing a connection to a SQL database. This object is used as the first
argument of other functions such as sql:query
, sql:insert
, etc.
connect($options as map(*)) ➔ javatype:java.sql.Connection
Arguments | |||
| $options | map(*) | Database connection parameters |
Result | javatype:java.sql.Connection |
Namespace
http://saxon.sf.net/sql
Saxon availability
Implemented since Saxon 9.9. Requires Saxon-PE or Saxon-EE. Available for Java only.
Notes on the Saxon implementation
Introduced in Saxon 9.9. Designed to supersede the extension instruction sql:connect. The saxon-sql-10.#.jar
file,
distributed alongside the main JAR file, must be added to the classpath when these SQL extension functions
are used. Changed in 10.5 to allow the JDBC driver name to be omitted, and to allow a DataSource
name to be provided.
Details
Returns an external object representing a connection to a SQL database. This object is used as the first
argument of other functions such as sql:query
, sql:insert
, etc.
The argument is a map, which follows the option parameter conventions. The defined options are:
Keyword | Type | Value |
---|---|---|
driver | xs:string |
The Java class name of the JDBC driver to be used, for example sun.jdbc.odbc.JdbcOdbcDriver .
No longer needed (and ignored if specified) from Saxon 10.5. |
dataSource | xs:string |
The name of a registered DataSource known to the Java naming service. If supplied, the database URL is ignored. NOTE: since the use of a DataSource typically depends on an execution framework such as an application server, Saxonica has performed only very limited testing of this feature, and user feedback about its functioning in different application environments is welcomed. |
database | xs:string |
The name (URL) of the database: naming conventions depend on the driver in use. An example
for the Derby database might be jdbc:derby:jar:webdb . For MySQL, it might
be jdbc:mysql://localhost:3306/test?user=root&password=secret |
user | xs:string |
Username to be used for authentication. Not needed if included in the database URL. |
password | xs:string |
Password to be used for authentication. Not needed if included in the database URL. |
autoCommit | xs:boolean |
Sets or unsets the auto-commit option on the connection that is established |
For example:
<xsl:variable name="connection" select="sql:connect(map{ 'database':'jdbc:mysql://localhost/saxontest', 'driver':'com.mysql.jdbc.Driver', 'user':'dbadmin', 'password':$password, 'autoCommit':true()})"/>It will often be appropriate to bind the result of the call to a global variable.
A dynamic error is thrown in the event of any connection failure. Improved diagnostics on the reason
for failure are output if the configuration option TIMING is set (-t
on the command line).
The connection object acts as a map and it is possible to call methods as dynamic function calls using the entries
in this map. For example $connection?isClosed()
will return a boolean indicating whether
the connection has been closed.
For actions that have side-effects, it is recommended to invoke them using the saxon:do extension instruction: for example to close the connection use the instruction:
<saxon:do action="$connection?close()"/>JDBC connections are not thread-safe. It is therefore advisable when using JDBC connections to suppress Saxon multi-threading by setting the configuration option ALLOW_MULTI_THREADING to false. A warning is issued if this is not done.
Note that the Saxon extension functions make no attempt to validate or verify the SQL statements being passed through the interface. In particular, there is no attempt to prevent SQL injection attacks: this is entirely the application's responsibility.