🧚 お知らせ!Beekeeper Studio は高速でモダンなオープンソースのデータベース GUI です ダウンロード
2024年9月23日 著者: Matthew Rathbone

JDBC 接続文字列とは?

JDBC 接続文字列とは、SQL Server データベースへの接続に必要なデータベースのホスト、ポート、その他のパラメータを指定する URL です。この文字列には、JDBC ドライバーが接続を確立するために必要な情報がすべて含まれています。

JDBC SQL Server 接続文字列の基本構造

JDBC SQL Server 接続文字列の一般的な形式は次のとおりです。

jdbc:sqlserver://[serverName[\instanceName][:portNumber]];[property=value[;property=value]]
  • jdbc:sqlserver:// - JDBC 接続で使用するプロトコルです。
  • serverName - SQL Server インスタンスをホストしているサーバーの名前または IP アドレスです。
  • instanceName(省略可) - 接続先の SQL Server インスタンスです。
  • portNumber(省略可) - 接続するポートです。デフォルトは 1433 です。
  • property=value - 接続を設定するための追加プロパティです(データベース名や認証情報など)。

PostgreSQL をお使いの場合は、PostgreSQL JDBC URL ビルダーで接続文字列を簡単に作成できます。

例: 最小構成の JDBC 接続文字列

String connectionUrl = "jdbc:sqlserver://localhost:1433;";

これは最もシンプルな形式の接続文字列で、次の条件を前提としています。

  • データベースサーバーがローカルでホストされている。
  • ポートは SQL Server のデフォルトポート 1433 である。

例: 完全な JDBC 接続文字列

より詳細な設定として、特定の認証情報とデータベースを使って、リモートサーバー上の名前付きインスタンスに接続するケースを考えてみましょう。

String connectionUrl = "jdbc:sqlserver://192.168.1.100\\SQLExpress:1433;"
                     + "databaseName=MyDatabase;"
                     + "user=myUsername;"
                     + "password=myPassword;";

各部分の意味は次のとおりです。

  • 192.168.1.100\\SQLExpress:1433 - サーバー 192.168.1.100 上のインスタンス SQLExpress に、ポート 1433 で接続します。
  • databaseName=MyDatabase - MyDatabase という名前のデータベースに接続します。
  • user=myUsername と password=myPassword - 認証に使用する資格情報です。

統合 Windows 認証を使用する例

SQL Server が Windows 認証を使用するよう設定されている場合は、integratedSecurity パラメータを使用できます。

String connectionUrl = "jdbc:sqlserver://localhost:1433;"
                     + "databaseName=MyDatabase;"
                     + "integratedSecurity=true;";

これにより、ドライバーは現在ログインしているユーザーの Windows 資格情報を使って認証します。

JDBC ドライバーで接続する

Java アプリケーションで接続文字列を使うには、SQL Server JDBC ドライバーを読み込んで接続を確立する必要があります。以下は、JDBC を使って SQL Server に接続する Java プログラムの完全な例です。

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

public class SQLServerConnection {
    public static void main(String[] args) {
        String connectionUrl = "jdbc:sqlserver://localhost:1433;"
                             + "databaseName=MyDatabase;"
                             + "user=myUsername;"
                             + "password=myPassword;";

        try {
            // Load the SQL Server JDBC driver
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

            // Establish the connection
            Connection con = DriverManager.getConnection(connectionUrl);

            // Create and execute a basic SQL query
            String SQL = "SELECT * FROM Customers";
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(SQL);

            // Iterate through the result set and print the data
            while (rs.next()) {
                System.out.println(rs.getString("CustomerID") + " - " + rs.getString("CustomerName"));
            }

            // Close the resources
            rs.close();
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

期待される出力:

データベースに Customers テーブルがある場合、上記のコードを実行すると、次のように顧客 ID と名前が出力されます。

1 - John Doe
2 - Jane Smith
3 - Alice Johnson

よく使われる接続文字列パラメータ

プロパティ 説明
databaseName 接続先のデータベース名。
user SQL Server ログインのユーザー名。
password SQL Server ログインのパスワード。
integratedSecurity true の場合、Windows 認証を有効にします。
encrypt true の場合、接続の暗号化を強制します。
trustServerCertificate true の場合、検証せずに SQL Server の証明書を信頼します。

接続トラブルのトラブルシューティング

無効な接続 URL

次のようなエラーが発生した場合:

com.microsoft.sqlserver.jdbc.SQLServerException: The connection string contains a badly formed name or value.

接続文字列が正しい形式になっているか、セミコロン(;)や等号(=)の位置が誤っていないかを確認してください。

ポートが待ち受けていない

接続が拒否されたことを示すエラーが出た場合は、次の点を確認してください。

  • SQL Server インスタンスが起動している。
  • 指定したポートが開いていて、待ち受け状態になっている。

SQL Server が待ち受けているポートは、SQL Server で次のクエリを実行して確認できます。

SELECT DISTINCT local_net_address, local_tcp_port 
FROM sys.dm_exec_connections
WHERE local_net_address IS NOT NULL;

ドライバーが見つからない

次のようなエラーが表示された場合:

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

SQL Server JDBC ドライバーがプロジェクトのクラスパスに追加されているか確認してください。ドライバーは Microsoft の Web サイトからダウンロードできます。

まとめ

接続文字列の構造を理解すれば、SQL Server への JDBC 接続の設定は簡単です。このチュートリアルでは、基本的な接続文字列と高度な接続文字列、Java アプリケーションへの組み込み方、よくあるトラブルシューティングのヒントなど、押さえておくべき要点を解説しました。

Beekeeper Studioは無料のオープンソースのデータベースGUIです

これまで使った中で最高のSQLクエリ&エディタツールです。データベースの管理に必要なものがすべて揃っています。 - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studioは高速で直感的、そして使いやすいツールです。多数のデータベースに対応し、Windows、Mac、Linuxで快適に動作します。

BeekeeperのLinux版は100%フル機能。手抜きも機能の妥協も一切ありません。

Beekeeper Studio 利用者の声

★★★★★
「Beekeeper Studio で以前の SQL ワークフローを完全に置き換えました。高速で直感的に使え、データベース作業がまた楽しくなりました。」
— Alex K.、データベース開発者
★★★★★
「多くのデータベース GUI を試してきましたが、Beekeeper は機能とシンプルさのバランスが絶妙です。とにかくちゃんと動きます。」
— Sarah M.、フルスタックエンジニア