You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JDBC连接SQL Server数据库及SSL启用/未启用场景下的精确JDBC URL配置

Hey there! Let's tackle your questions about JDBC connections to SQL Server, including the SSL-specific configurations you're curious about.

1. 如何通过JDBC连接SQL Server数据库?

Connecting via JDBC is straightforward once you have the right setup:

  • First, make sure you have the Microsoft JDBC Driver for SQL Server added to your project. If you're using Maven, you can include the dependency in your pom.xml; otherwise, download the JAR manually and add it to your classpath.
  • (Optional) Load the driver class. Starting from JDBC 4.0, drivers are auto-loaded via service providers, but if you're working with an older environment, you can run:
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    
  • Build your connection URL and establish the connection. The basic URL format is:
    jdbc:sqlserver://<server_address>:<port>;databaseName=<database_name>;user=<username>;password=<password>
    
    Example code using try-with-resources (to safely manage resources):
    String connectionUrl = "jdbc:sqlserver://10.29.34.222:1433;databaseName=test;user=your_username;password=your_password";
    try (Connection conn = DriverManager.getConnection(connectionUrl)) {
        // Use the connection for your database operations
        System.out.println("Connected successfully!");
    } catch (SQLException e) {
        e.printStackTrace();
    }
    
2. 针对启用/未启用SSL的SQL Server,精确JDBC URL配置

You noticed your current URL works for both SSL-enabled and non-SSL databases—that's because the JDBC driver's default SSL behavior is often permissive (varies slightly by driver version). To make your configuration explicit and avoid unexpected behavior, here's how to tailor the URL for each scenario:

2.1 未启用SSL的SQL Server(强制非加密连接)

If your database doesn't use SSL and you want to ensure the driver never attempts an SSL handshake (to avoid unnecessary overhead or connection issues), add encrypt=false to your URL:

jdbc:sqlserver://10.29.34.222:1433;databaseName=test;encrypt=false;user=your_username;password=your_password

This locks the connection to unencrypted mode, which is ideal for non-SSL environments.

2.2 已启用SSL的SQL Server(强制加密连接)

For SSL-enabled databases, you need to enforce encryption with encrypt=true, and adjust additional parameters based on your certificate setup:

  • Trusted CA-signed certificate: If your SQL Server uses a certificate from a CA trusted by your JVM, simply add encrypt=true:
    jdbc:sqlserver://10.29.34.222:1433;databaseName=test;encrypt=true;user=your_username;password=your_password
    
  • Self-signed certificate (or untrusted CA): To skip certificate validation (note: this is not recommended for production due to security risks), add trustServerCertificate=true:
    jdbc:sqlserver://10.29.34.222:1433;databaseName=test;encrypt=true;trustServerCertificate=true;user=your_username;password=your_password
    
  • Custom trust store: If you want to use a specific trust store containing your SQL Server's certificate, specify the path and password:
    jdbc:sqlserver://10.29.34.222:1433;databaseName=test;encrypt=true;trustStore=/path/to/your/truststore.jks;trustStorePassword=your_truststore_password;user=your_username;password=your_password
    

The reason your original URL worked for both scenarios is likely because your driver version uses a default encrypt value that allows both encrypted and unencrypted connections (e.g., auto or false in older versions). Explicitly setting encrypt ensures your connection behaves exactly as intended for each environment.

内容的提问来源于stack exchange,提问作者madhusudhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 06:34:09