完整類代碼
package person.fane.test;
import java.sql.*;
public class OracleTest {
private final String oracleDriverName = "oracle.jdbc.driver.OracleDriver";
// Thin 驅動 URL 格式:jdbc:oracle:thin:@host:port:SID
private final String oracleUrlToConnect = "jdbc:oracle:thin:@192.168.0.36:1521:Test";
private Connection myConnection = null;
public OracleTest() {
try {
Class.forName(oracleDriverName); // 載入驅動
} catch (ClassNotFoundException ex) {
System.out.println(getErrorMessage(ex, "驅動載入失敗,請聯繫開發人員!").toString());
}
}
private StringBuffer getErrorMessage(Exception ex, String alarmMessage) {
StringBuffer sb = new StringBuffer();
sb.append(alarmMessage).append(ex.getMessage());
return sb;
}
public Connection getConnection() {
try {
// 獲取連接:URL、用戶名、密碼
this.myConnection = DriverManager.getConnection(oracleUrlToConnect, "Fane", "201");
} catch (Exception ex) {
System.out.println(getErrorMessage(ex, "無法獲取連接,請聯繫開發人員!").toString());
}
return this.myConnection;
}
public static void main(String[] args) {
OracleTest test = new OracleTest();
try {
Connection conn = test.getConnection();
System.out.println("開始執行查詢...");
PreparedStatement pstmt = conn.prepareStatement(
"SELECT area_id, area_name, ip_address, tel, area_type, pc_id FROM c_area_info");
ResultSet rs = pstmt.executeQuery();
StringBuffer sb = new StringBuffer();
while (rs.next()) {
sb.append(rs.getInt("area_id")).append(" ")
.append(rs.getString("area_name")).append(" ")
.append(rs.getString("ip_address")).append(" ")
.append(rs.getString("tel")).append(" ")
.append(rs.getInt("area_type")).append(" ")
.append(rs.getInt("pc_id")).append(" ");
}
System.out.println(sb.toString());
} catch (Exception ex) {
System.out.println(test.getErrorMessage(ex, "應用程序錯誤,請聯繫開發人員!").toString());
}
}
}
關鍵點解析
- 驅動類名:Oracle 9i/10g/11g 均為
oracle.jdbc.driver.OracleDriver(舊版 oracle.jdbc.OracleDriver 已棄用)。
- Thin 驅動 URL:
jdbc:oracle:thin:@IP:PORT:SID,無需客戶端安裝,純 Java 實現。
- PreparedStatement:預編譯 SQL,防止注入,支援參數綁定(
setInt、setString、setDate 等)。
- 資源管理:生產環境必須在
finally 中關閉 ResultSet、Statement、Connection,或使用 Try-with-resources (JDK 7+)。
- 連接池:實際項目建議整合 HikariCP、Druid 或應用服務器(WebLogic/Tomcat)數據源,避免頻繁創建銷毀連接。