LoginSignup
0
1

More than 5 years have passed since last update.

【Java】【SQLServer】SQLServer用JDBCを利用してローカルのSQLServer2017に接続する

Last updated at Posted at 2019-03-03

備忘用に残しています
※時間があったらまとめます。

環境

種別 ツール名 備考
OS Windows 10 Pro
IDE Pleiades 2018 Javaのフルエディションを使用
Java Java8
DB SQL Server 2017 Developer

SQLServer のJDBCをJavaプロジェクトに追加する

①該当のバージョンのJDBCをダウンロード
②「C:\Program Files」に解凍
 ※Microsoftは上記プログラムフォルダに保存することを推奨している模様
 ※解凍したJDBCにあるinstall.txtで明記されています
③Eclipseのプロジェクトにて任意のフォルダに該当のJDBCのJARファイルを移動する
 ※私は「mssql-jdbc-7.2.1.jre8.jar」を使用し、ファイルはコピーせずに「ファイルへのリンク」にしました
プロジェクト・エクスプローラーでJDBCを追加したいプロジェクトでコンテキストメニュー(右クリック)でプロパティ―を選択
④Java のビルド・パスで「ライブラリー」タブを選択し、「JAR の追加」ボタン押下
⑤JDBCを入れたフォルダを選択し、「OK」ボタン押下
⑥「適用して閉じる」ボタンを押下する

エラー内容

com.microsoft.sqlserver.jdbc.SQLServerException: ホスト [servername]、ポート 1433 への TCP/IP 接続が失敗しました。エラー: "Connection refused: connect。接続プロパティを調べて、SQL Server のインスタンスがホスト上で実行されていて、ポートへの TCP/IP 接続が許可されており、そのポートへの TCP 接続がファイアウォールにブロックされていないことを確認してください。"。

原因

記載の通り。
自分の場合は、SQL Server のTCP/IP 通信を許可していなかったため、上記エラーが発生していました。

解決策
※他の原因は時間ができたら記載します。

①Windows + R で表示されるファイル名を指定して実行ダイアログにて「SQLServerManager14.msc」 でSQL Server 構成 マネージャー を起動する
②SQL Server 構成マネージャー > SQL Server ネットワークの構成 > MSSQLSERVER のプロトコルを選択し、TCP/IPを選択、コンテキストメニュー(右クリック表示)で有効化を選択
③SQL Server 構成マネージャー > SQL Server のサービス でSQL Server(MSSQLSERVER) を選択し、コンテキストメニュー(右クリック表示)で「再起動」を選択しSQL Serverのサービスを起動し直す
④下記コードを実行

接続確認用のテストコード
※任意の値に変更してください

ConnectURL.java

package testdbconnection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectURL {
    public static void main(String[] args) {

        // Create a variable for the connection string.
        String connectionUrl = "jdbc:sqlserver://[servername:[port];databaseName=[dbname];user=[username];password=[password]";

        try (Connection con = DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();) {
            String SQL = "SELECT TOP 10 * FROM [tablename]";
            ResultSet rs = stmt.executeQuery(SQL);

            // Iterate through the data in the result set and display it.
            while (rs.next()) {
                System.out.println(rs.getString("[columnname1]") + " " + rs.getString("[columnname2]"));
            }
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
            System.out.println("can't connectioned");
        }
    }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1