首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Web JDBC 連接 SQL Server 完整配置與常見錯誤排查

     編輯:程式設計綜合問答

驅動程式選擇

  • Microsoft 官方驅動(推薦):com.microsoft.sqlserver.jdbc.SQLServerDriver,JAR 名 mssql-jdbc-x.x.x.jre8.jar。
  • jTDS 驅動(舊版常用):net.sourceforge.jtds.jdbc.Driver。

連線字串標準格式

// Microsoft 驅動
jdbc:sqlserver://192.168.1.119:1433;databaseName=Web;encrypt=true;trustServerCertificate=true

// jTDS
jdbc:jtds:sqlserver://192.168.1.119:1433/Web

SQL Server 服務端必開設定

  1. SQL Server Configuration Manager → 啟用 TCP/IP 協定,IPAll 埠設為 1433。
  2. 啟用 SQL Server Browser 服務(命名實例需求)。
  3. 防火牆開放 1433 (TCP) 及 1434 (UDP Browser)。
  4. 建立 SQL 驗證登入帳號,對應資料庫授權 db_datareader/db_datawriter。

Servlet 程式碼關鍵修正

public class RegisterServlet extends HttpServlet {
    private static final String URL = "jdbc:sqlserver://192.168.1.119:1433;databaseName=Web;encrypt=true;trustServerCertificate=true";
    private static final String USER = "sa";
    private static final String PASS = "123456";
    private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

    @Override
    public void init() throws ServletException {
        try { Class.forName(DRIVER); }
        catch (ClassNotFoundException e) { throw new ServletException("驅動載入失敗", e); }
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        String sql = "INSERT INTO login (username, password) VALUES (?, ?)";
        try (Connection conn = DriverManager.getConnection(URL, USER, PASS);
             PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, username);
            ps.setString(2, password);
            int rows = ps.executeUpdate();
            resp.getWriter().print(rows > 0 ? "註冊成功" : "註冊失敗");
        } catch (SQLException e) {
            e.printStackTrace();
            resp.getWriter().print("資料庫錯誤:" + e.getMessage());
        }
    }
}

常見錯誤對照表

錯誤訊息原因解決
ClassNotFoundException驅動 JAR 未放入 CLASSPATH放入 WEB-INF/lib 或 Maven 依賴
The TCP/IP connection to the host has failedIP/埠錯誤、防火牆阻擋、TCP/IP 未啟用檢查 Configuration Manager、防火牆、連線字串
Login failed for user 'sa'密碼錯誤/帳號鎖定/僅 Windows 驗證模式SSMS 修改登入屬性、啟用混合模式

總結

JDBC 連接 SQL Server 關鍵在於:正確驅動 JAR、標準連線字串、伺服器 TCP/IP 啟用、防火牆開放、混合驗證模式。使用 try-with-resources 自動關閉資源,避免連線洩漏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved