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

PHP 呼叫 Java 類別操作資料庫:跨語言整合實戰架構

     編輯:PHP 綜合知識

架構概覽

PHP 負責 Web 表現層,Java 負責資料存取與商務邏輯,透過 PHP Java Bridge(或 PHP 內建 Java 擴充套件)實現跨語言呼叫。

實作三步驟

1. 建立系統 ODBC 資料源

控制台 → 系統 DSN → 新增 Oracle 9i 驅動,名稱 photo,配置連線資訊。

2. Java 資料庫連線工具類

package com.inberkong.util;
import java.sql.*;

public class DataBaseConnection {
    public static Connection getConnection() {
        Connection con = null;
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("jdbc:odbc:photo", "photo", "inberkong");
        } catch (Exception e) { e.printStackTrace(); }
        return con;
    }
}

編譯後置於 PHP Java 類別路徑(java.class.path 指定目錄)。

3. Java 業務處理類:查詢用戶角色關係輸出 JS 陣列

package com.inberkong.processBean;
import java.sql.*;
import com.inberkong.util.DataBaseConnection;

public class GetUserRolesArray {
    private Connection con;
    // ... 省略屬性宣告 ...

    public GetUserRolesArray() {
        try { this.con = DataBaseConnection.getConnection(); } catch (Exception e) {}
    }

    public String getUserRolesArray() throws Exception {
        String sql = "SELECT ID, NAME FROM ADMIN WHERE STATE!=0 AND USERTYPE!='0' ORDER BY ID DESC";
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while (rs.next()) {
            String id = rs.getString("ID");
            String name = rs.getString("NAME");
            sb.append("\narr[").append(i).append("]=new BDSort('").append(id).append("','00','").append(name).append("','');");
            i++;

            // 子查詢:已分配角色
            String sql3 = "SELECT ID, NAME FROM ROLE_MANAGE WHERE ID IN (SELECT ROLE_ID FROM USER_ROLE_LINK WHERE USER_ID=" + id + ") ORDER BY ID";
            // ... 同理處理未分配角色 ...
        }
        return sb.toString();
    }

    // 建議實作 close() 釋放連線,finalize() 呼叫 close()
}

PHP 呼叫端

<?php
$javaObj = new Java("com.inberkong.processBean.GetUserRolesArray");
$jsArray = $javaObj->getUserRolesArray();
echo $jsArray; // 直接輸出 JS 程式碼供前端使用
?>

關鍵配置

  • php.ini 啟用 extension=php_java.dll
  • [Java] 區段設定 java.class.path 包含 php_java.jar 及自訂類別目錄
  • 確保 JAVA_HOME、PATH 正確指向 JDK/JRE
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved