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

JSP 連接數據庫方法大全 (精簡版):Oracle、SQL Server 核心代碼與配置要點

     編輯:關於JSP

前言

針對初學者最常用的 **Oracle、SQL Server** 兩大數據庫,提供最精簡、可直接複製運行的 JSP 連接代碼,並標註關鍵配置項,避開 ClassNotFound、URL 錯誤、編碼亂碼三大坑。

通用準備

  1. 驅動 JAR 放入 WEB-INF/lib (Maven 專案加入 pom.xml)。
  2. 數據庫建表:CREATE TABLE test (test1 VARCHAR(20), test2 VARCHAR(20));
  3. 插入數據:INSERT INTO test VALUES ('Hello', 'World');

1. Oracle (Thin 模式,推薦)

<%@ page import="java.sql.*" contentType="text/html;charset=UTF-8" %>
<html><body>
<%
    // 1. 驅動類 (JDBC 4.0+ 可省略 Class.forName)
    // Class.forName("oracle.jdbc.OracleDriver");
    
    // 2. 連接 URL - 兩種寫法擇一
    // SID 寫法 (傳統)
    String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
    // Service Name 寫法 (支援 RAC/PDB,12c+ 推薦)
    // String url = "jdbc:oracle:thin:@//localhost:1521/PDB1";
    
    Connection conn = DriverManager.getConnection(url, "scott", "tiger");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM test");
    
    while (rs.next()) {
%>
    欄位1: <%= rs.getString(1) %>, 欄位2: <%= rs.getString(2) %><br/>
<%
    }
    rs.close(); stmt.close(); conn.close();
%>
<b>連接成功!</b>
</body></html>

驅動選擇:

  • JDK 8/11:ojdbc8.jar
  • JDK 11+:ojdbc11.jar
  • Maven:com.oracle.database.jdbc:ojdbc8 / ojdbc11 (需 Oracle Maven 倉庫認證)

2. SQL Server (Microsoft 官方驅動)

<%@ page import="java.sql.*" contentType="text/html;charset=UTF-8" %>
<html><body>
<%
    // Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    
    // URL 關鍵參數
    String url = "jdbc:sqlserver://localhost:1433;" +
                 "databaseName=pubs;" +
                 "encrypt=false;" +           // 開發環境關閉加密
                 "trustServerCertificate=true;" // 信任自簽憑證
                 
    Connection conn = DriverManager.getConnection(url, "sa", "YourStrongPassword");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM test");
    
    while (rs.next()) {
%>
    欄位1: <%= rs.getString(1) %>, 欄位2: <%= rs.getString(2) %><br/>
<%
    }
    rs.close(); stmt.close(); conn.close();
%>
<b>連接成功!</b>
</body></html>

驅動選擇:

  • Maven:com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre11 (根據 JDK 版本選 jre8/jre11/jre17)
  • JAR 直下:mssql-jdbc-12.4.2.jre11.jar

3. 關鍵避坑清單

現象原因解決
ClassNotFoundException驅動 JAR 未在 WEB-INF/lib / Maven 作用域非 compile檢查打包產物 WEB-INF/lib/ 是否存在 JAR
ORA-12505 / SID 不存在URL 中 SID/Service Name 錯誤數據庫服務器執行 lsnrctl status 確認實例名
Communications link failureIP/端口/防火牆/數據庫未啟動telnet host port 測試;關閉防火牆或開放端口
中文亂碼字符集不一致URL 加 characterEncoding=UTF-8;DB/表/列/連接統一 UTF-8 (Oracle: AL32UTF8)
SQL Server 加密錯誤2016+ 默認加密開發加 encrypt=false;生產配置有效憑證

4. 進階:生產環境標準模式 (DataSource + JNDI)

<%@ page import="java.sql.*, javax.naming.*, javax.sql.*" %>
<%
    Context ctx = new InitialContext();
    DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MyDS");
    
    try (Connection conn = ds.getConnection();
         PreparedStatement ps = conn.prepareStatement("SELECT * FROM test");
         ResultSet rs = ps.executeQuery()) {
        
        while (rs.next()) {
            out.print("欄位1: " + rs.getString(1) + ", 欄位2: " + rs.getString(2) + "<br/>");
        }
    }
%>

Tomcat context.xml 配置:

<Resource name="jdbc/MyDS"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:@//localhost:1521/PDB1"
    username="scott"
    password="tiger"
    maxTotal="20"
    maxIdle="10"
    validationQuery="SELECT 1 FROM DUAL"
    testOnBorrow="true"/>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved