Netbeansでこのエラーが発生します。
Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
これはどのように引き起こされ、どうすれば解決できますか?
Java.sql.SQLException:jdbc:derby:// localhost:1527 /に適したドライバーが見つかりません
この例外には2つの原因があります。
あなたの場合、接続文字列の最後にデータベース名が表示されるはずです。たとえば(create=true
データベースが存在しない場合にデータベースを作成したい場合):
jdbc:derby://localhost:1527/dbname;create=true
データベースは、ネットワークサーバーが起動したディレクトリにデフォルトで作成されます。ただし、データベースの場所への絶対パスを指定することもできます。
jdbc:derby://localhost:1527//home/Pascal/derbyDBs/dbname;create=true
念のため、クラスパスにderbyclient.jarがあり、適切なドライバをロードしていることを確認してくださいorg.Apache.derby.jdbc.ClientDriver
サーバーモードで作業している場合。
注意: こちら からダウンロードできます。
見つからない場合は、
プロジェクト選択タブでプロジェクトを見つける
「ライブラリ」を右クリックします
「JAR /フォルダを追加...」をクリックします
「derbyclient.jar」を選択します
「開く」をクリックすると、「ライブラリ」の下に「derbyclient.jar」が表示されます。
URL、ユーザー名、パスワードが正しいことを確認し、コードを実行してください:)
私のために
DriverManager.registerDriver(new org.Apache.derby.jdbc.EmbeddedDriver());
助けた。このようにして、DriveManagerはderby EmbeddedDriverを認識します。新しいEmbeddedDriverの割り当ては重いかもしれませんが、反対に、Class.forNameにはtry/catch/doSomethingIntelligentWithExceptionが必要です。
JDBC DriverManager
は、指定された接続URLに適切なDriver
を見つけることができません。 DBに接続する前にJDBCドライバーがまったくロードされていないか、接続URLが間違っています。接続URLが正常に見えるため、ドライバーがまったくロードされていないことは間違いありません。 DBに接続する前に、アプリケーションの起動中にドライバーをロードする必要があります。 Apache Derbyの場合、ドライバークラス名はorg.Apache.derby.jdbc.ClientDriver
。そう:
Class.forName("org.Apache.derby.jdbc.ClientDriver");
NetbeansでJavaアプリケーションを作成しているときに同じ問題が発生しました。解決策は次のとおりです。
プロジェクト選択タブでプロジェクトを見つける
「ライブラリ」を右クリックします
「JAR /フォルダを追加...」をクリックします
「derbyclient.jar」を選択します
「開く」をクリックすると、「ライブラリ」の下に「derbyclient.jar」が表示されます。
URL、ユーザー名、Wordが正しいことを確認し、コードを実行します:)
プロジェクトの下のライブラリコンソールにライブラリを追加して、これを解決しました。
私のプロジェクトは機能しています!
質問には回答されていますが、説明のためにコマンドラインを提供しています。ネットワークモードダービーに接続するために、できるだけ簡単なテストを試みていたときに、これはうまくいきました。
Class.forName( "org.Apache.derby.jdbc.ClientDriver")。newInstance();でアプリにロードされたドライバー
接続URLは「jdbc:derby:// localhost:1527/myDB; create = true」でした。
Java -classpath derbyclient.jar :. myAppClassを使用してアプリを実行しました
組み込みDerbyを使用している場合、クラスパスにDerby.jarが必要です。
私は同じ問題に直面していました。接続URLとユーザー資格情報を使用して接続を取得する前に、DriverManager.registerDriver()呼び出しがありませんでした。
Linuxでは次のように修正されました。
DriverManager.registerDriver(new org.Apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass);
Windowsの場合:
DriverManager.registerDriver(new org.Apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/Users/Test/DB_Name", user, pass);
Derbyサーバーを開始するのに足りない可能性があります。ダービーサーバーが起動すると、デフォルトポート1527のリッスンを開始します。
起動スクリプトは次の場所にあります。
Windows:
<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat
Linux:
<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer
同様の問題に直面し、Eclipseのクラスパスにderby.jar、derbyclient.jar、derbynet.jar、derbytools.jar jarを含めることで解決しました。
手順に従ってください
[ライブラリ]タブに移動し、[外部JARの追加]をクリックします。
パスから上記のjarを選択します。 C:\ Program Files\Java\jdk1.8.0_161\db\lib
OKをクリックします。
お役に立てれば :)
このエラーは、接続文字列の構文が無効な場合に発生します。
接続文字列は次のように使用できます
'jdbc:derby:MyDbTest;create=true'
または
コマンドプロンプトで次のコマンドを使用できます。以下のコマンドは、MyDbTest
という新しいデータベースを正常に作成します。
connect 'jdbc:derby:MyDbTest;create=true';
このスレッドに記載されているすべてを試してみましたが、.registerDriver()のみが機能しました。これは、コードの私の部分がどのように見えるかです:
DriverManager.registerDriver(new org.Apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection(url, user, pass);
問題は組み込みのDerbyにはなかったことに注意してください。
Persistence.xmlでは、jdbcのURLがDerbyサーバーを指している間にEmbeddedDriverが使用された可能性もあります。この場合、URLを変更してデータベースのパスを指すようにします。
私はこの問題にぶつかり、上記のすべての提案を試みましたが、それでも失敗しました。上記で提案されたことを繰り返すことなく、私(あなた)が欠落している可能性があるものがあります:あなたがmavenを使用している場合、おそらく依存関係を述べるでしょう:
<groupId>org.Apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>
バージョンに注意してください。実行しているサーバーインスタンスと互換性がある必要があります。
Mavenの依存関係が提供するものを放棄し、実行中のサーバーの同じソースである「%Java_HOME%\ db\lib」から外部jarを手動で追加することで、この問題を解決しました。この場合、ローカルを使用してテストしています。
したがって、リモートサーバーインスタンスでテストする場合は、サーバーパッケージに付属しているderbyclient.jarを探してください。
データベースが作成されており、への接続を開始している場合は、ドライバーjarを追加する必要があります。プロジェクトウィンドウから、ライブラリフォルダを右クリックし、c:programsfiles\Sun\javadb\lib\derbyclient.jarに移動します。ファイルをロードすると、実行できるはずです。
ではごきげんよう
Java DBサーバーが開始されていない場合も、同じエラーが発生する可能性があります。