com.microsoft.sqlserver.jdbc.SQLServerDriver,JAR 名 mssql-jdbc-x.x.x.jre8.jar。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
db_datareader/db_datawriter。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 failed | IP/埠錯誤、防火牆阻擋、TCP/IP 未啟用 | 檢查 Configuration Manager、防火牆、連線字串 |
| Login failed for user 'sa' | 密碼錯誤/帳號鎖定/僅 Windows 驗證模式 | SSMS 修改登入屬性、啟用混合模式 |
JDBC 連接 SQL Server 關鍵在於:正確驅動 JAR、標準連線字串、伺服器 TCP/IP 啟用、防火牆開放、混合驗證模式。使用 try-with-resources 自動關閉資源,避免連線洩漏。