2017-05-04 3 views
0

プログラムでhsqldbサーバーを作成するときは、org.hsqldb.server.Serverクラスを使用すると便利です。HSQLDB APIのorg.hsqldb.jdbc.JDBCConnectionクラスの使用

私はいつもサーバーに接続するためにJava SDKクラス(java.sql.Connection)を使用していました。サーバーがメモリベースであろうとファイルベースであろうと接続するだけで十分だと思います。

私たちはなぜorg.hsqldb.jdbc.JDBCConnection hsqldb APIクラスを必要としますか?

+0

質問を編集するためのAmitKのおかげで! – Bll

+0

私の質問を編集してくれてありがとうMrak! – Bll

答えて

0

「クラス」はありませんjava.sql.Connection:インターフェイスです。 JDBCは、インタフェース(およびいくつかのサポートするクラス)で構成されるAPIです。これらのインタフェースは、実際に何かを実行できるように、各JDBCドライバによって実装される必要があります。

HSQLDBを使用する場合は、java.sql.Connectionの実装をorg.hsqldb.jdbc.JDBCConnectionとします。これには、HSQLDBがどのように動作するか(JDBC自体が知らないもの)の詳細が含まれています。しかし、通常は、JDBCで定義されたインタフェースを介してアクセスするだけで済みます。それは移植性のためにさらに好ましい。

つまり、org.hsqldb.jdbc.JDBCConnectionでなければ、HSQLDBに接続することさえできません。

+0

**実装とインターフェイスの関係... **多くの感謝! – Bll

0

私はHSQLDBを多用していませんが、APIドキュメントがあなたの質問のための最良のソースと思われます。 Class JDBCConnection

ドキュメントは言う -

JDBC 4.0注:

は、JDBC 4.0(JDK 1.6)を皮切りに、DriverManagerの方法 のgetConnectionとgetDriversは、Java Standard Editionのサービスをサポートするように拡張されましたプロバイダ機構。 JDBC 4.0をサポートするJava ランタイムで構築された場合、 ドライバ実装を含むHSQLDBディストリビューションジャーナルには、 META-INF/services/java.sql.Driverファイルも含まれています。このファイルには、HSQLDB java.sql.Driver実装の完全修飾クラス名( 'org.hsqldb.jdbc.JDBCDriver') が含まれています。

したがって、JDBC 4.0以降では、アプリケーションは、Class.forName()を使用して に明示的にHSQLDB JDBCドライバをロードする必要がなくなりました。 のうち、 Class.forName()を使用してJDBCドライバをロードする既存のプログラムは、修正を行わずに引き続き動作します。

だから、標準化されたコードを続けることができます。

このクラスには、HSQLDBに固有のいくつかの追加のメソッドがあります。

また、あなたがタイプキャストをするためにあなたの他の質問については、これらの具体的な方法、

JDBCConnection connection = 
      (JDBCConnection) DriverManager.getConnection(url, connProperties); 

を使用することを計画している場合があります、パターンがある - <url>[;key=value]*あなたすなわち、URLの後にセミコロンを置き、キー指定 - の値をkey=valueフォーマット。それぞれkey=valueはセミコロンで区切る必要があります。

jdbc:hsqldb:hsql://localhost/cities;user=bill;password=password つまり、キー値のペアを追加する前にセミコロンを追加し、最後のキー値のペアにはセミコロンを追加しません。

+0

Sabirさん、ありがとうございます。それは多くの助けになります。あなたが気にしないならば、もう1つの質問。 APIの同じページに**最後に** HSQLDB固有情報**があります。それは言う:1.7.2から、データベース接続に、 ' [; key = value] *'の形式で接続プロパティ()を追加することができます。簡単な例?私はこれを理解するのに苦労します。 – Bll

+0

@Bllあなたは本当に新しい質問としてそれを求めているはずです。 –

+0

ありがとうございます、このAPIの新しい質問を作成します。 – Bll