JavaをSQLServerに接続

Javaとデータベース

今回はjavaとSQLServerを接続してみましょう。それに必要なJDKとSQLServerのインストールは以下のリンクを見て済ませておいてください。

  1. Javaの基礎編
  2. SQLServerのインストールと接続まで

コマンドプロンプトでの実行環境作り

JDBC Driver for SQL Server

  1. JDBC Driver for SQL Serverのダウンロード
  2. CLASSPATHの設定
  3. VsCodeでコーディング、コンパイル、実行

一番基本のコマンドプロンプトを使った開発実行環境を順番に紹介していきます

JDBC Driverのインストール

Microsoft LearnからJDBC Driver for SQL Serverをダウンロードします。

jdbc download

このページの少し下にダウンロードの項目があるのでそこからZIPをダウンロードします

jdbc download

ダウンロードしたら解凍します。その配下にjpn\jarsフォルダーがあります。

jdbc download

その中のmssql-jdbc-12.6.1.jre11.jar等の新しいjarを、C:\Program Files\Java\jdk-21\libにコピーします。

jdbc install

これでjavaのpathにjarが入りました。

userを作ってpasswordを設定して接続する場合はこれで準備できたことになりますが、今回は「サーバーを信頼する」で接続したいのでもう一つ作業があります。

先ほど解凍したフォルダーの中のjpn\auth\x64フォルダーの中にmssql-jdbc_auth-12.6.1.x64.dllというファイルがありますので、これを\Windows\System32に貼り付けます。

jdbc install

これでファイルはあるべきところに収まりました

CLASSPATHの設定

あるべきところに収まったのですが、javaがそこを見てくれないと意味がありません。そこでCLASSPATHを設定してpathを通ります。

そこで環境変数をさわるためにシステム詳細い設定を開いていきます。まずシステムのホームを下にスクロールしてシステムの詳細設定を探します

CLASSPATH

するとシステムのプロパティが現れるので、環境設定をクリックします

CLASSPATH

システムの設定にCLASSPATHを追加して「.;C:\Program Files\Java\jdk-21\lib\mssql-jdbc-12.6.1.jre11.jar」を追加します。

CLASSPATH

これで普通にjavacしたときに指定したjarが追加されます。今後なにか必要になったら、ここに追加します。

VsCodeでコーディング、コンパイル、実行

では、まずはコネクトするだけのサンプルを作ります

Main.java
	import java.sql.Connection;
	import java.sql.DriverManager;
	import java.sql.SQLException;
	
	public class Main {
		public static void main(String[] args) {
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	
			} catch(ClassNotFoundException e) {
				throw new IllegalStateException("ドライバーのロードに失敗しました");
			}
	
			Connection con = null;
			try {
				con = DriverManager.getConnection(
					"jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName=shop;" + 
					"IntegratedSecurity=true;TrustServerCertificate=true;");
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				if (con != null) {
					try {
						con.close();
					} catch(SQLException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}

最初にまずSQLServerのドライバーをロードします。

つづいて肝心の接続の宣言を記述します。今回はlocalに無料版のSQLServerが入っていますので、localhostのSQLEXPRESSに接続します。

データベースにはshopを指定、そしてサーバーを信頼して接続します。C#等で接続する時に似ていますが、途中にスペースを入れるとつながりませんでした。

コンパイルと実行をしましょう

Main.javaコンパイル実行
java Main.java
java Main

encodingはutf-8がデフォルトになったのでいりません。そしてCLASSPATHも設定済みなので単純です。

エラーが出なければOKです