Java SQLServerに接続してselectするサンプル

JavaのWindows認証でSQLServerに接続してselectするサンプルです。

確認環境
・Java 8
・SQL Server 2019 Express Edition

目次

サンプル 接続してselectを実行する
  SQLServerへWindows認証で接続する設定方法

接続してselectを実行する

JavaでSQLServerに接続してselectを実行するサンプルです。

package test1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

		final String URL = "jdbc:sqlserver://localhost\\SQLEXPRESS;"
				 + "Database=testDB1;integratedSecurity=true;";
		final String SQL = "select * from syain where id =? and romaji=?";

		try (Connection conn = DriverManager.getConnection(URL);
			PreparedStatement ps = conn.prepareStatement(SQL)){

			ps.setInt(1, 2);
			ps.setString(2, "tanaka");

            try(ResultSet rs = ps.executeQuery()){
                while (rs.next()) {
                    System.out.println(
                    	rs.getInt("id") + " " +
                    	rs.getString("name") + " " +
                        rs.getString("romaji"));
                }           
            }
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.out.println("処理が完了しました");
		}
	}
}

11,12行目は、接続の文字列です。
11行目のlocalhostはサーバ名でSQLEXPRESSはインスタンス名です。円マークで区切っています。
12行目のDatabase=testDB1は、データベース名です。
Windows認証の場合は、integratedSecurity=trueを指定します。
13行目は、SQL文です。クエスチョンマーク(?)は、プレースホルダです。パラメータで値を設定します。
入力される不正な文字を抑止できるのでSQLインジェクション対策になります。
固定文字列のSQLの部分がプリコンパイルされるので実行速度が上がります。
15行目のtryの後に続くかっこ()はリソースを自動でクローズします。try-with-resources構文と呼ばれます。Java7で導入されました。
18,19行目は、プレースホルダに値をセットしています。
21行目は、SQL文を実行しています。

 

SQLServerへWindows認証で接続する設定方法

1.JDBCドライバを取得

1-1.Microsoft SQL Server 用 JDBC Driver のダウンロードのページからドライバをダウンロードします。

https://docs.microsoft.com/ja-jp/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15

1-2.ダウンロードしたzipを展開し、jarファイルをクラスパス(ビルドパス)に設定します。
jarファイルはJava8用のmssql-jdbc-9.2.1.jre8.jarを設定しました。

Eclipse jarファイルをクラスパスに設定する方法

Mavenからも取得できます。

https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc

 

2.ddlを配置

展開したzipファイルのsqljdbc_9.2\jpn\auth\x64配下にある以下のファイルを
pathが通っているフォルダに配置します。※x64は64bitでx86は32bitです。

mssql-jdbc_auth-9.2.1.x64.dll

上記ファイルがない場合は、以下のメッセージが表示されます。

「SQL Server のインスタンスがホスト上で実行されていて、ポートへの TCP/IP 接続が許可されており、そのポートへの TCP 接続がファイアウォールにブロックされていないことを確認してください。」

 

3.Sql Server Configuration Managerを開き以下の設定を確認

3-1.「SQL Serverネットワーク」の構成の「SQLEXPRESSのプロトコル」のTCP/IPが「無効」の場合は「TCP/IP」を右クリックして「有効」にします。

TCP/IPが無効の場合は、以下のメッセージが表示されます。

「サーバー sqlexpress は、TCP/IP をリッスンするように構成されていません。」

 

3-2.「SQL Serverのサービス」の「SQL Server Browser」が「停止」の場合は起動して「実行中」にします。※起動方法は次の3-3に記載。

実行されていない場合は、以下のメッセージが表示されます。

「SQL Server 2005 以降では、SQL Server Browser サービスがホスト上で実行されていることを確認してください。」

 

3-3.「SQL Server Browser」の起動方法は、「SQL Server Browser」を右クリックしてプロパティを選択し「サービス」の「開始モード」を「自動」にします。

 

3-4.上記それぞれの設定を反映させるには「SQL Serverのサービス」の「SQL Server (SQLEXPRESS)」を右クリックして再起動をクリックします。

関連の記事

SQL Server DDL文でtable,view等を作成するサンプル
Java SQLServerでinsert/update/deleteするサンプル

△上に戻る