# sql:connect

`sql:connect` creates a database connection. It has attributes `driver`, `database`, `user`, `password`, and `auto-commit` all of which are attribute value templates (so the values can be passed in as parameters).

The `driver` attribute names the JDBC driver class to be used. The database name must be a name that JDBC can associate with an actual database.

The `auto-commit` attribute, if present, should take the value "yes" or "no". This causes a call of `connection.setAutoCommit()` on the underlying JDBC connection.

The `sql:connect` instruction returns a database connection as a value, specifically a value of type "external object", which can be referred to using the type `java:java.sql.Connection`. Typically the value will be assigned to a variable using the construct:

    <xsl:variable  name="connection"
                   as="java:java.sql.Connection"
                   xmlns:java="http://saxon.sf.net/java-type">
      <sql:connect database="jdbc:odbc:testdb"
                   driver="sun.jdbc.odbc.JdbcOdbcDriver"
                   xsl:extension-element-prefixes="sql"/>
    </xsl:variable>

This can be a global variable or a local variable; if local, it can be passed to other templates as a parameter in the normal way. The connection is used on instructions such as `sql:insert` and `sql:query` with an attribute such as `connection="$connection"`; the value of the `connection` attribute is an expression that returns a database connection object.

Next