# sql:connect

`sql:connect` creates a database connection. It has attributes `driver`, `database`, `user`, and `password`, 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 `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.

Expand | Next