⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdbcconnection.java

📁 hsqldb是100%java实现的数据库,是一个开放源代码的JAVA数据库 l 具有标准的SQL语法和JAVA接口 l HSQLDB可以自由使用和分发 l 非常简洁和快速的
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* Copyright (c) 2001-2005, The HSQL Development Group * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of the HSQL Development Group nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package org.hsqldb.jdbc;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.SQLWarning;import java.sql.Statement;//#ifdef JDBC3import java.sql.Savepoint;//#endif JDBC3//#ifdef JAVA2import java.util.Map;//#endif JAVA2import java.util.Locale;import org.hsqldb.DatabaseManager;import org.hsqldb.DatabaseURL;import org.hsqldb.HSQLClientConnection;import org.hsqldb.HTTPClientConnection;import org.hsqldb.HsqlException;import org.hsqldb.persist.HsqlProperties;import org.hsqldb.Result;import org.hsqldb.ResultConstants;import org.hsqldb.Session;import org.hsqldb.SessionInterface;import org.hsqldb.Trace;import org.hsqldb.lib.StringUtil;// fredt@users 20020320 - patch 1.7.0 - JDBC 2 support and error trapping// JDBC 2 methods can now be called from jdk 1.1.x - see javadoc comments// boucherb@users 20020509 - added "throws SQLException" to all methods where// it was missing here but specified in the java.sql.Connection interface,// updated generic documentation to JDK 1.4, and added JDBC3 methods and docs// boucherb@users and fredt@users 20020505 - extensive review and update// of docs and behaviour to comply with java.sql specification// fredt@users 20020830 - patch 487323 by xclayl@users - better synchronization// fredt@users 20020930 - patch 1.7.1 - support for connection properties// kneedeepincode@users 20021110 - patch 635816 - correction to properties// unsaved@users 20021113 - patch 1.7.2 - SSL support// boucherb@users 2003 ??? - patch 1.7.2 - SSL support moved to factory interface// fredt@users 20030620 - patch 1.7.2 - reworked to use a SessionInterface// boucherb@users 20030801 - JavaDoc updates to reflect new connection urls// boucherb@users 20030819 - patch 1.7.2 - partial fix for broken nativeSQL method// boucherb@users 20030819 - patch 1.7.2 - SQLWarning cases implemented/** * <!-- start generic documentation --> * A connection (session) with a specific database. Within the context * of a Connection, SQL statements are executed and results * are returned. <p> * * A Connection's database is able to provide information describing * its tables, its supported SQL grammar, its stored procedures, the * capabilities of this connection, and so on. This information is * obtained with the <code>getMetaData</code> method. <p> * * <B>Note:</B> By default the Connection automatically commits * changes after executing each statement. If auto commit has been * disabled, an explicit commit must be done or database changes will * not be saved. <p> * * <!-- end generic documentation --> * <!-- start release-specific documentation --> * <div class="ReleaseSpecificDocumentation"> * * <hr> * * <b>HSQLDB-Specific Information:</b> <p> * * To get a <code>Connection</code> to an HSQLDB database, the * following code may be used (updated to reflect the most recent * recommendations): <p> * * <hr> * * When using HSQLDB, the database connection <b>&lt;url&gt;</b> must start with * <b>'jdbc:hsqldb:'</b><p> * * Since 1.7.2, connection properties (&lt;key-value-pairs&gt;) may be appended * to the database connection <b>&lt;url&gt;</b>, using the form: <p> * * <blockquote> *      <b>'&lt;url&gt;[;key=value]*'</b> * </blockquote> <p> * * Also since 1.7.2, the allowable forms of the HSQLDB database connection * <b>&lt;url&gt;</b> have been extended.  However, all legacy forms continue * to work, with unchanged semantics.  The extensions are as described in the * following material. <p> * * <hr> * * <b>Network Server Database Connections:</b> <p> * * The 1.7.2 {@link Server Server} database connection <b>&lt;url&gt;</b> has * changed to take one of the two following forms: <p> * * <div class="GeneralExample"> * <ol> * <li> <b>'jdbc:hsqldb:hsql://host[:port][/&lt;alias&gt;][&lt;key-value-pairs&gt;]'</b> * * <li> <b>'jdbc:hsqldb:hsqls://host[:port][/&lt;alias&gt;][&lt;key-value-pairs&gt;]'</b> *         (with TLS). * </ol> * </div> <p> * * The 1.7.2 {@link WebServer WebServer} database connection <b>&lt;url&gt;</b> * also changes to take one of two following forms: <p> * * <div class="GeneralExample"> * <ol> * <li> <b>'jdbc:hsqldb:http://host[:port][/&lt;alias&gt;][&lt;key-value-pairs&gt;]'</b> * * <li> <b>'jdbc:hsqldb:https://host[:port][/&lt;alias&gt;][&lt;key-value-pairs&gt;]'</b> *      (with TLS). * </ol> * </div><p> * * In both network server database connection <b>&lt;url&gt;</b> forms, the * optional <b>&lt;alias&gt;</b> component is used to identify one of possibly * several database instances available at the indicated host and port.  If the * <b>&lt;alias&gt;</b> component is omitted, then a connection is made to the * network server's default database instance. <p> * * For more information on server configuration regarding mounting multiple * databases and assigning them <b>&lt;alias&gt;</b> values, please read the * Java API documentation for {@link org.hsqldb.Server Server} and related * chapters in the general documentation, especially the Advanced Users * Guide. <p> * * <hr> * * <b>Transient, In-Process Database Connections:</b> <p> * * The 1.7.2 100% in-memory (transient, in-process) database connection * <b>&lt;url&gt;</b> takes one of the two following forms: <p> * * <div class="GeneralExample"> * <ol> * <li> <b>'jdbc:hsqldb:.[&lt;key-value-pairs&gt;]'</b> *     (the legacy form, extended) * * <li> <b>'jdbc:hsqldb:mem:&lt;alias&gt;[&lt;key-value-pairs&gt;]'</b> *      (the new form) * </ol> * </div> <p> * * With the 1.7.2 transient, in-process database connection <b>&lt;url&gt;</b>, * the <b>&lt;alias&gt;</b> component is the key used to look up a transient, * in-process database instance amongst the collection of all such instances * already in existence within the current class loading context in the * current JVM. If no such instance exists, one <em>may</em> be automatically * created and mapped to the <b>&lt;alias&gt;</b>, as governed by the * <b>'ifexists=true|false'</b> connection property. <p> * * <hr> * * <b>Persistent, In-Process Database Connections:</b> <p> * * The 1.7.2 standalone (persistent, in-process) database connection * <b>&lt;url&gt;</b> takes one of the three following forms: <p> * * <div class="GeneralExample"> * <ol> * <li> <b>'jdbc:hsqldb:&lt;path&gt;[&lt;key-value-pairs&gt;]'</b> *      (the legacy form, extended) * * <li> <b>'jdbc:hsqldb:file:&lt;path&gt;[&lt;key-value-pairs&gt;]'</b> *      (same semantics as the legacy form) * * <li> <b>'jdbc:hsqldb:res:&lt;path&gt;[&lt;key-value-pairs&gt;]'</b> *      (new form with 'files_in_jar' semantics) * </ol> * </div> <p> * * For the persistent, in-process database connection <b>&lt;url&gt;</b>, * the <b>&lt;path&gt;</b> component is the path prefix common to all of * the files that compose the database. <p> * * As of 1.7.2, although other files may be involved (such as transient working * files and/or TEXT table CSV data source files), the essential set that may, * at any particular point in time, compose an HSQLDB database are: <p> * * <div class="GeneralExample"> * <ul> * <li>&lt;path&gt;.properties * <li>&lt;path&gt;.script * <li>&lt;path&gt;.log * <li>&lt;path&gt;.data * <li>&lt;path&gt;.backup * <li>&lt;path&gt;.lck * </ul> * </div> <p> * * For example: <b>'jdbc:hsqldb:file:test'</b> connects to a database * composed of some subset of the files listed above, where the expansion * of <b>&lt;path&gt;</b> is <b>'test'</b> prefixed with the path of the * working directory fixed at the time the JVM is started. <p> * * Under <em>Windows</em> <sup><font size="-2">TM</font> </sup>, <b> * 'jdbc:hsqldb:file:c:\databases\test'</b> connects to a database located * on drive <b>'C:'</b> in the directory <b>'databases'</b>, composed * of some subset of the files: <p> * * <pre class="GeneralExample"> * C:\ * +--databases\ *    +--test.properties *    +--test.script *    +--test.log *    +--test.data *    +--test.backup *    +--test.lck * </pre> * * Under most variations of UNIX, <b>'jdbc:hsqldb:file:/databases/test'</b> * connects to a database located in the directory <b>'databases'</b> directly * under root, once again composed of some subset of the files: <p> * * <pre class="GeneralExample"> * / * +--databases/ *    +--test.properties *    +--test.script *    +--test.log *    +--test.data *    +--test.backup *    +--test.lck * </pre> * * <b>Some Guidelines:</b> <p> * * <ol> * <li> Both relative and absolute database file paths are supported. <p> * * <li> Relative database file paths can be specified in a platform independent *      manner as: <b>'[dir1/dir2/.../dirn/]&lt;file-name-prefix&gt;'</b>. <p> * * <li> Specification of absolute file paths is operating-system specific.<br> *      Please read your OS file system documentation. <p> * * <li> Specification of network mounts may be operating-system specific.<br> *      Please read your OS file system documentation. <p> * * <li> Special care may be needed w.r.t. file path specifications *      containing whitespace, mixed-case, special characters and/or *      reserved file names.<br> *      Please read your OS file system documentation. <p> * </ol> <p> * * <b>Note:</b> Versions of HSQLDB previous to 1.7.0 did not support creating * directories along the file path specified in the persistent, in-process mode * database connection <b>&lt;url&gt;</b> form, in the case that they did * not already exist.  Starting with HSQLDB 1.7.0, directories <i>will</i> * be created if they do not already exist., but only if HSQLDB is built under * a version of the compiler greater than JDK 1.1.x. <p> * * <b>res: Connections</b><p> * * The new <b>'jdbc:hsqldb:res:&lt;path&gt;'</b> database connection * <b>&lt;url&gt;</b> has different semantics than the * <b>'jdbc:hsqldb:file:&lt;path&gt;'</b> form. The semantics are similar to * those of a <b>'files_readonly'</b> database, but with some additional * points to consider. <p> * * Specifically, the <b>'&lt;path&gt;'</b> component of a <b>res:</b> type * database connection <b>&lt;url&gt;</b> is used to obtain resource URL * objects and thereby read the database files as resources on the class path. * Moreover, the URL objects <i>must</i> point only to resources contained * in one or more jars on the class path (must be jar protocol). <p> * * This restriction is enforced to avoid the unfortunate situation in which, * because <b>res:</b> database instances do not create a &lt;path&gt;.lck file * (they are strictly files-read-only) and because the <b>&lt;path&gt;</b> * components of <b>res:</b> and <b>file:</b> database URIs are not checked * for file system equivalence, it is possible for the same database files to * be accessed concurrently by both <b>file:</b> and <b>res:</b> database * instances. That is, without this restriction, it is possible that * &lt;path&gt;.data and &lt;path&gt;.properties file content may be written * by a <b>file:</b> database instance without the knowlege or cooperation * of a <b>res:</b> database instance open on the same files, potentially * resulting in unexpected database errors, inconsistent operation * and/or data corruption. <p> * * In short, a <b>res:</b> type database connection <b>&lt;url&gt;</b> is * designed specifically to connect to a <b>'files_in_jar'</b> mode database * instance, which in turn is designed specifically to operate under * <em>Java WebStart</em><sup><font size="-2">TM</font></sup> and * <em>Java Applet</em><sup><font size="-2">TM</font></sup>configurations, * where co-locating the database files in the jars that make up the * <em>WebStart</em> application or Applet avoids the need for special security * configuration or code signing. <p> * * <b>Note:</b> Since it is difficult and often nearly impossible to determine * or control at runtime from where all classes are being loaded or which class * loader is doing the loading under <b>'files_in_jar'</b> semantics, the * <b>&lt;path&gt;</b> component of the res: database connection

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -