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

Java 連接操作 Oracle 數據庫完整實戰代碼詳解

     編輯:Java 相關知識

前言

JDBC 是 Java 操作關係型數據庫的基石。本文提供一個基於 Oracle 的完整控制台交互式實戰項目,涵蓋增、刪、改、查、多線程併發控制等核心場景,代碼可直接落地項目參考。

核心功能模組

1. 數據庫連線管理

Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:SP";
Connection conn = DriverManager.getConnection(url, "test", "123");
  • 使用 oracle.jdbc.driver.OracleDriver(需 ojdbc*.jar)。
  • Thin 驅動模式:jdbc:oracle:thin:@host:port:SID。

2. 學生信息錄入(Insert)

String sql = "insert into examstudent values(fiowid.nextval, to_number(?), ?, ?, ?, ?, to_number(?))";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, grade); ps.setString(2, idCard); ps.setString(3, examCard);
ps.setString(4, name); ps.setString(5, location); ps.setString(6, score);
ps.executeUpdate();
  • 採用 PreparedStatement 防注入,序列 fiowid.nextval 生成主鍵。
  • 輸入校驗:身份證 18 位、準考證 15 位。

3. 多條件查詢

String sql = "select * from examstudent where " + (byIdCard ? "idcard = ?" : "examcard = ?");
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, input);
ResultSet rs = ps.executeQuery();
if (rs.next()) { /* 打印詳情 */ }

4. 刪除操作

int rows = stmt.executeUpdate("delete examstudent where examcard = '" + examCard + "'");

5. 多線程併發模擬

public class Text_lianxi extends Thread {
    public void run() { synchronized("") { yunxing(); } } // 類級鎖模擬窗口串行
    public static void main(String[] args) {
        new Text_lianxi().setName("窗口1").start();
        // 可啟動窗口2、3 測試併發
    }
}
  • 繼承 Thread,synchronized("") 使用字符串常量池對象作鎖,模擬多窗口串行訪問數據庫。
  • 生產環境建議用連接池(HikariCP/Druid)+ 事務隔離級別控制併發。

關鍵技術點總結

技術點說明
Statement vs PreparedStatement後者預編譯、防注入、批量執行效能高,生產首選
資源關閉順序ResultSet → Statement → Connection,放在 finally 塊
事務控制示例未顯式開啟事務,默認自動提交;業務需求時用 conn.setAutoCommit(false)
異常處理捕獲 SQLException/ClassNotFoundException,打印堆棧便於排查

運行截圖說明

程序啟動後呈現控制台菜單:

  1. 輸入信息 → 驗證長度 → 入庫成功提示
  2. 查詢信息 → 選擇身份證/準考證 → 輸入號碼 → 顯示完整記錄
  3. 刪除信息 → 輸入準考證 → 反饋刪除結果
  4. 異常輸入 → 友好錯誤提示並引導重試

生產環境遷移建議

  1. 連接池化: 替換 DriverManager 為 HikariCP,配置最大/最小連接數、超時策略。
  2. DAO 分層: 將 SQL 與業務邏輯分離,使用 MyBatis/JdbcTemplate 簡化映射。
  3. 參數化配置: URL、用戶名、密碼外置至 application.yml,支持多環境。
  4. 日誌規範: 採用 SLF4J + Logback 替換 System.out.println,分級記錄 SQL、慢查詢、異常。

完整代碼結構

package com.sp.test;
import java.sql.*; import java.util.*;
public class Text_lianxi extends Thread {
    // 1. run() → yunxing()
    // 2. shuru() / chaxun() / shanchu() 交互輸入
    // 3. yunxing() 核心邏輯:連線 → 菜單 → CRUD → 關閉資源
    // 4. main() 啟動線程
}

(完整代碼見原文,此處為結構概覽)

總結

本示例以「最小可運行單元」展示了 JDBC 核心流程。實戰中請務必引入連接池、ORM 框架、統一異常處理與日誌體系,構建可維護、高效能的數據訪問層。

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