Oracle のドキュメントに記載されているように、データベースの URL は DriverManager.getConnection() 関数で "jdbc:subprotocol:subname:" の形式である必要があります。最初の最も明白な質問は、たとえば "C: \myDatabase.db"?
3 に答える
JDBC-Url は URL であり、Uniform Resource Identifier です。これは、構文に従う必要があることを意味します。C:\myDatabase.db
URI に書き換えることもできますfile:/c:/myDatabase.db
。
実際、Windows エクスプローラー ブースも同じですが、Web ブラウザーは URL 形式しか理解できません。
URL に戻る: URL は構文に従います。最初の部分はプロトコルです ( file
) これは:
、prootocoll 固有の部分から a で区切られます。
file
-URI の場合、これは root-directory で始まり、その後に で区切られたフォルダーが続くパスになります/
。/
JDBC-Url の場合、唯一の共通部分はスキーム ( jdbc
) とセパレーター:
です。
あなたの例では、ローカルファイルを使用しています。しかし、別のサーバーで実行されているデータベースをどのように指定しますか? 別の方法を作成する必要があります。したがって、次のように開始できます。
jdbc:
スキーマmydatabasesystem:
これは、「これは 'ydatabbasesystem' の JDBC-Url であり、次の構文を知っています。localfile:
ローカル ファイルを使用します。次の部分は localfiles の構文です。/c:/myDatabase.db
私のファイルがあります
これにより、jdbc-Url が生成されます。
jdbc:mydatabasesystem:localfile:/c:/myDatabase.db
データベースがネットワーク経由で接続されている可能性があることを想像します。これは次のように記述できます。
jdbc:mydatabasesystem:remoteserver:servername?username=user&password=secret
おわかりのように、さまざまなメーカーのデータベースに接続するための一般的な方法を作成する場合、データベースに接続するための共通の方法を作成する必要があります。これは、JDBC-url のようなものになります。
Java はオペレーティング システムに依存せず、「C:\myDatabase.db」などの形式はオペレーティング システム固有です。たとえば、Solaris で実行されている Oralce DBMS に接続することはできません。また、DBMS に依存しないようにしようとしています。すべての DBMS システムが、MySQL のようなシステムの同じデータベース/テーブル編成を使用しているわけではありません。解決しようとしている問題の複雑さを考えると、彼らの解決策は実際にはかなり単純です。
URL 内の各コンポーネントを分割すると、なぜその形式が必要なのかがわかります。
- 多くのデータベースがあり、それぞれ独自の方法で情報を保存しています。そして、特定のドライバーだけがその専有情報を理解して解釈できます。したがって、サブプロトコルを oracle/mysql/etc にする必要があります。
- オラクル専用のドライバーには多くの種類があります。http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.htmlで、サブネームに thin/oci/etc を入れることができる場所を確認してください。
- Sotirios が述べたように、データベースがあなたの C:\ になく、他の誰かのサーバーにある場合 - ホストが必要であり、当然ポートも必要になります。
- そのサーバーでも、同じポートで、1 つのデータベース「サーバー」が複数のデータベース (またはサービス) にサービスを提供できます。そのため、URL にもデータベース名が必要です。