HTTPサーブレットプログラムでSQL Serverデータベースを使用したいだけですが、プログラムがデータベースに接続できないようです。次のエラーが表示されます。JDBC経由でSQL Serverに接続できません。 jdbc:sqlserverのドライバが見つかりません://
No suitable driver found for jdbc:sqlserver://localhost:1433;databaseName=Bookyard;integratedSecurity=true;
これは私の接続方法です。
package practice.bookyard.server.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Database {
public static Connection getConnection() {
String url = "jdbc:sqlserver://(LocalDb)\\MSSQLLocalDB:1433;databaseName=Bookyard;integratedSecurity=true;";
Connection connection = null;
try {
connection = DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}
私は以前localhost:1433
としてサーバ名を持っていたが、私はSQL Serverインスタンス名(LocalDb)\\MSSQLLocalDB:1433
にそれを変更し、まだ古い名前をピックアップしているようです。
また、SQL Server localdbに接続するときに適切な接続文字列を指定する方法がわかりません。
私はEclipse for Java EE、Mars 2を使用していますが、SQL 6.0のMicrosoft JDBCドライバはthis websiteからダウンロードしました。
インストールを実行し、結果のフォルダの内容を解凍しました。次に、sqljdbc42.jarファイルをJDK 1.8をターゲットにしてビルドパスに追加しました。怖いウォンバットの提案の際
UPDATE
、私も自分のクラスパスにsqljdbc42.jarファイルへのパスを追加しました。
しかし、私はまだ同じエラーを取得します。
これはリフレクションの問題であり、タイプローダーがドライバのタイプを自分の接続文字列から解決できないという点でかなり確信しています。つまり、使用している接続文字列の構文が間違っています。
次のように私は読むために私の接続文字列を変更:
String url = "jdbc:sqlserver://localhost:1433;
instance=(LocalDb)\\MSSQLLocalDB;
databaseName=Bookyard;integratedSecurity=true;";
をしかし、私はまだ同じエラーを取得するだけでなく、私が受け取る例外メッセージはまだ私の古い接続文字列を持っています。だから、明らかに、キャッシングもいくつかありますが、私はちょうどどこを知りません。誰が私の接続文字列をキャッシュしていますか、そのキャッシュをリフレッシュ/クリアするにはどうすればいいですか?
localdbに接続していて、メインのSQL Serverインスタンスに接続していない場合、SQL Serverインスタンス名を指定する方法を教えてください。
あなたがString url = "jdbc:sqlserver://YOUR PC NAME;instanceName=SQLEXPRESS;DatabaseName=dbname;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection myCon = DriverManager.getConnection(url);
以下のノートのように行うことができます
SQL Server Configuration ManagerでTCP/IPが有効になっているかどうかチェックできますか?有効になっていない場合は、有効にする必要があります。私が正しく覚えていれば、この変更を行った後でシステムを再起動する必要があるかもしれません。 –
jarファイルはクラスパスだけでなく、ビルドパスにもなければなりません。ビルドパスはコンパイル専用です –
@ScaryWombatどうすればクラスパスに入れるのですか?私は初心者ですか?それは環境変数ですか? –