まずは公式を参考にする
公式を参考にJDBCドライバーをダウンロードして WEB-INF < lib ディレクトリに入れる。
そして、クラスパスを通す。
コードも公式を参考に。
public class TestDao { public static void main(String[] args) { String connectionUrl = "jdbc:sqlserver://localhost\\SQLEXPRESS:1433;" + "database=DB名;" + "username=ユーザー名;" + "password=パスワード;" + "encrypt=true;" + "trustServerCertificate=true;"; try (Connection connection = DriverManager.getConnection(connectionUrl);) { // Code here. } // Handle any errors that may have occurred. catch (SQLException e) { e.printStackTrace(); } } }
SQLServerのユーザー追加
Windows認証はダメだったので下記記事を参考にユーザー追加。
ただ、追加するだけじゃログインできなくてハマった。
DBにすんなり接続できたこと1度もない。
SQLServerサーバー認証を設定 & 再起動
ユーザー権限変更するもまだログインできない。
下記記事を参考にSQLServer自体にSQLServer認証を設定 & 再起動。
がっ!だめ!
ポートが開いてないエラー
ホスト localhost、名前付きインスタンス SQLEXPRESS への接続が失敗しました。 エラー: "java.net.SocketTimeoutException: Receive timed out"。サーバーとインスタンスの名前を調べ、ポート 1434 への UDP トラフィックがファイアウォールにブロックされていないことを確認してください。 SQL Server 2005 以降では、SQL Server Browser サービスがホスト上で実行されていることを確認してください。
「sqlserver ポート」で調べると下記の記事が出てきた。
TCP/IPを有効&ポートの設定
上記の記事を参考にTCP/IPを有効にしてポートを1433に設定する。
さらにSQLServerを再起動する。
やっと接続できた!!!