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

以 Oracle 7 為核心開發管理資訊系統(MIS)的實戰經驗

     編輯:Oracle 資料庫基礎

前言:選擇 Oracle 7 打造高效能 MIS

開發高水準的管理資訊系統(MIS),資料庫選型至關鍵。經多方評估,我們採用 Oracle 7(於 UNIX 平台),搭配 PowerBuilder 5.0、VB 4 等前端工具,成功建置穩定、高效的企業級 MIS。本文分享資料管理、文字/圖像處理、加密、匯出等實戰技術與經驗。

系統架構與環境

  • Server:CDC 4360 小型機,UNIX OS,Oracle 7,FDDI 環網,TCP/IP 協定。
  • Client:486 以上 PC,16MB+ RAM,Win 95,安裝 ONNET、Oracle CDE SQL*Net V2。
  • 開發工具:PowerBuilder 5.0 (PB5)、Visual Basic 4。

核心應用技術

1. 一般資料操作(DataWindow 為主)

-- 設定交易物件並檢索
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()

-- 新增/刪除列
dw_1.InsertRow(dw_1.GetRow() + 1)
dw_1.DeleteRow(0)

-- 更新入庫
dw_1.Update()
COMMIT;

-- 列印
dw_1.Print()

2. 文字/長文本管理(LONG 欄位 + MLE 多行編輯器)

關鍵技巧:PB5 的 Blob 變數中轉,處理換行符(CR/LF),再寫入/讀出 LONG 欄位。

// 讀入檔案 → Blob → 字串 → 移除 CR/LF → 存入 MLE
fileopen → fileread → string(blob) → replace(char(13)+char(10), "") → mle_1.text

// 寫入資料庫
UPDATE table SET long_col = :blob_var WHERE ...;

// 讀出顯示
SELECT long_col INTO :blob_var FROM table WHERE ...;
mle_1.text = string(blob_var)

重新產生文字檔:SELECT long_col INTO :blob_var ...; filewrite(fh, blob_var)

3. 圖像/大型二進位檔(BMP → LONG 欄位)

// 讀入圖檔 → Blob → 顯示於 Picture 控制項 → 存入 LONG
fileopen(picname) → fileread(fn, pict_blob) → setpicture(p_1, pict_blob)
UPDATE pic_table SET bmp_col = :pict_blob; COMMIT;

大檔案可分塊寫入(LONG 理論上限 2GB)。

關鍵開發經驗與最佳實務

4.1 必須使用 SQL*Net V2(棄用 V1)

Oracle 7.3 後不再支援 SQL*Net TCP/IP V1。Client 端請透過 ORAINST.EXE 安裝:

  • Oracle TCP/IP Adapter 2.1.4.1.3
  • SQL*Net 2.1.4.1.4

網路廠商選 Microsoft Windows NT TCP/IP 3.1。複製 Server 端 tnsnames.ora 至 Client c:\orawin\network\admin,內容範例:

ORA7 = (DESCRIPTION=
  (ADDRESS=(PROTOCOL=TCP)(HOST=111.1.1.1)(PORT=1521))
  (CONNECT_DATA=(SID=ORA7))
)

以 sqlplus scott/tiger@ORA7 測試連線。

4.2 自訂加密演算法保護機密資料

不將密碼明文存表,改用複雜函數運算驗證/修改密碼(PB5 範例):

// 密碼格式:舊密碼/新密碼
password = sle_1.text
IF pos(sle_1.text, "/") > 0 THEN
  old_pwd = left(sle_1.text, pos-1)
  new_pwd = mid(sle_1.text, pos+1)
  SELECT dwbm INTO :dm FROM dw WHERE mm = :old_pwd;
  IF sqlca.sqlcode <> 0 THEN MessageBox("錯誤","舊口令錯誤")
  ELSE
    IF new_pwd <> "" THEN
      SELECT dwbm INTO :chk FROM dw WHERE mm = :new_pwd;
      IF sqlca.sqlcode = 100 THEN  -- 新密碼未被使用
        UPDATE dw SET mm = :new_pwd WHERE mm = :old_pwd; COMMIT;
      END IF
    END IF
  END IF
END IF

4.3 透過 Excel 輸出精美報表

PB5 一鍵匯出:dw_1.SaveAs("c:\report.xls", Excel!, TRUE)。再利用 Excel 樣板與資料連結,產出格式化報表。

4.4 日期型別正確處理(避免隱性 Bug)

Oracle 日期常數格式:'DD-MON-YY'(如 '01-FEB-96')。
錯誤範例:UPDATE tab SET rq = '1996-02-01'; → 隱性轉換失敗。
正確:UPDATE tab SET rq = '01-FEB-96'; 或使用 TO_DATE 明確轉換。

結語

Oracle 7 的穩健效能與豐富功能(LONG、Blob、分散式、安全性)是 MIS 成功關鍵。未來將升級 Oracle 8/8i,結合 Web 技術與多媒體,打造新一代網路化、多媒體化 MIS。

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