基於WEB的數據庫查詢 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 基於WEB的數據庫查詢 (http://www.webasp.net/article/1/55.htm) |
| -- 作者:未知 -- 發佈日期: 2003-04-06 |
| ---- 97 年 以 來 基 於WEB 的 數 據 庫 應 用 在 數 據 庫 界 談 論 的 頗
多, 基 於WEB 的 數 據 庫 的 應 用, 是 將 數 據 庫 和WEB 技 術 結 合, 按 照BROWS/SERVER 結 構 建 立 的 通 過 瀏 覽 器 訪 問 數 據 庫 的 服 務 系 統。 目 前 以WEB 數 據 庫 為 旗 幟 的 產 品、 原 形 或 設 計 方 案 及 研 究 論 文 很 多, 開 發 數 據 庫 的WEB 應 用, 建 立 能 與 數 據 庫 交 互 的WEB 網 頁, 大 致 有 三 中 方 法: 其 一 是 網 關 接 口(CGI), 其 二 是JDBC(JAVA DATABASE CONNECTIVITY), 其 三 是 各 數 據 庫 廠 家 開 發 的 各 自 的WEB 中 間 間。 ---- 各 數 據 庫 廠 家 開 發 的 各 自 的WEB 中 間 件 雖 好 不 能 通 用;JDBC 可 移 植 性、 安 全 性 與 可 靠 性 有 顯 著 優 點, 但 對 開 發 難 度 大, 不 能 滿 足 廣 大 非 專 業 人 員 的 需 要;CGI 方 式 應 用 靈 活, 開 發 工 具 豐 富, 通 用CGI 程 序 也 很 多。 本 人 通 過 在 網 上 周 游, 尋 得 一WEB 數 據 庫CGI 接 口 程 序ODBIC(101K 字 節 大 小), 小 巧 玲 瓏, 應 用 靈 活, 可 以 和 各 種 數 據 庫( 包 括FOXPRO 系 列、SQL SERVER、ORACLE 等) 建 立 連 接。 ---- ODBIC(OPEN DATABASE INTERNE CONNECTOR) 程 序 是 運 行 在WINDOWS NT 和WIN95 上 的 共 享 軟 件, 可 通 過http://www.iodbc.com 獲 得 該 軟 件( 目 前 已 有ODBIC1.5 版, 本 文 使 用 的 是ODBIC1.4 版)。ODBIC 是 在 瀏 覽 器 和 數 據 庫 之 間 提 供 一 個 接 口, 即 一 個CGI 程 序, 可 以 通 過 瀏 覽 器 時 時 更 新 和 瀏 覽 數 據 庫。 ---- 通 過ODBIC 可 以 用 標 准 的ANSI SQL 語 句 諸 如:SELECT, INSERT, UPDATE, or DELETE 對 在ODBC 中 設 置 的 所 有 數 據 庫 進 行 操 作。ODBIC 的 最 大 優 點 是 可 以 用 摸 板 文 件 作 為 輸 入, 摸 板 文 件 也 能 接 收 命 令 中 通 過submit 發 來 的 用 戶 輸 入 參 數, 摸 板 包 含 標 准 的HTML 命 令 和 文 本, 並 且 這 些 命 令 和 文 本ODBIC 直 接 輸 出 到 瀏 覽 器 上, 當 然 摸 板 也 包 含ODBIC 命 令 和 變 量。 當ODBIC 以 摸 板 作 為 輸 入 運 行 時, 標 准 的HTML 命 令 和 文 本 直 接 輸 出 到 瀏 覽 器 上, 發 現ODBIC 命 令 時 立 即 執 行, 發 現ODBIC 變 量 時 立 即 用 變 量 的 當 前 值 代 替。ODBIC 命 令 是 放 在 標 准 的HTML 語 言 的 注 釋 行 裡,ODBIC 變 量 是 用 一 對 符 號 括 著, 下 面 一 個 很 簡 單 的 例 子 說 明ODBIC 命 令 和 變 量 是 如 何 出 現 在 摸 板 文 件 裡 的: < !--DATABASE DSN=$my_database$ -- >t; < !--SQL select * from my_table -- >; < !--TABLE-- >; DATABASE、SQL、TABLE 是ODBIC的最基本的命令。 ---- 本 文 通 過 一 個 實 例 介 紹 用ODBIC 編 寫 在 中 文WIN95 下 訪 問SQL SERVER 數 據 庫 的 應 用 程 序, 體 會 以 下ODBIC 功 能 的 靈 活、 方 便、 易 學 的, 推 薦 給 大 家 共 免。 ---- 在 下 面 的 例 子 裡, 我 們 要 用 到 一 電 信 營 業 數 據 庫 的 長 途 電 話 明 細 表, 表 結 構 如 下( 數 據 庫 名 為TELEPHONE, 所 用 表 名 為DETAIL): ---- 主叫號碼(CALLER) 被叫號碼(CALLED) 起始時間(START-TIME) 通話時長(LENGTH)秒 通話話費(FEI)元 PQABCD1 0101234567 98/03 19/27 100 220 PQABCD2 0371123456 98/03 19/40 370 462 ... ... ---- 首 先, 建 立ODBC 數 據 庫 的 連 接, 打 開WIN95 的「 設 置」 菜 單 中 的「 控 制 面 板」, 啟 動ODBC 驅 動 程 序, 設 置 相 應 的ODBC 驅 動 器, 本 例 中 為SQL SERVER; 建 立 數 據 源, 為 了 方 便 此 處 數 據 源 的 名 也 為TELEPHONE。 如 果「 控 制 面 板」 中 沒 有ODBC 驅 動 程 序, 可 以 從WIN95 的 系 統 盤 中 裝 入, 也 可 從 一 些 共 享 軟 件 站 點 下 載, 具 體 辦 法 此 處 不 在 贅 述。 ---- 然 後, 編 寫 長 話 明 細 查 詢 主 頁, 為 了 簡 化, 清 單 中 刪 去 了 一 些 修 飾 性 的HTML 語 句, 查 詢 類 型 中 也 只 保 留 了 長 話 明 細( 可 以 包 含 電 話 擋 案 查 詢 和 更 改、 交 費 匯 總 和 明 細、 帳 務 處 理 等 等)。 ---- 長 話 明 細 查 詢 主 頁 清 單:SEARCH。HTML < HTML > < HEAD > < TITLE >長話明細查詢主頁< /TITLE > < /HEAD > < CENTER > < TABLE > < FONT SIZE="5" COLOR="#990000" > 長話明細查詢< /FONT > < FORM METHOD="post" ACTION=" ../cgi-bin/odbic.exe/cgi-bin/MODEL.html" > < TR >< TD ALIGN="right" >< FONT COLOR="#990000" > 電話號碼 : < /FONT > < /TD > < TD >< INPUT NAME="DHHM" TYPE="text" SIZE="12" > < /TD >< /TR > < TR >< TD ALIGN="right" >< FONT COLOR="#990000" > 授權口令: < /FONT > < /TD > < TD >< INPUT NAME="PWD" TYPE="password" SIZE="12" > < /TD >< /TR > < TR >< TD ALIGN="right" >< FONT COLOR="#990000" > 查詢類型: < /FONT > < /TD > < TD >< SELECT NAME="CATE" > < OPTION VALUE= >--請選擇-- < OPTION VALUE="ch" >長話明細 < /TD >< /TR > < /TABLE > < INPUT TYPE="submit" VALUE="查詢 " > < INPUT TYPE="reset" VALUE="清除 " >< /FONT > < /FORM > < /CENTER > < /BODY > < /HTML > ---- 接 下 來 就 是 編 寫 摸 板 文 件, 在 編 寫 之 前, 先 介 紹 以 下ODBIC 的 主 要 命 令。ODBIC 軟 件 主 要 有 以 下 命 令: ---- DATABASE 定 義 連 接ODBC 數 據 庫 的 參 數; ---- DEFAULT 定 義 變 量 的 默 認 初 始 值; ---- EACHROW, ENDROW 格 式 化 結 構 化 查 詢 後 的 每 一 行 結 果; ---- EXEC 執 行 一 個 系 統 命 令 或 運 行 一 個DOS 程 序; ---- EXIT 終 止ODBIC 對 摸 板 文 件 的 執 行; ---- FORMAT 定 義 變 量 的 輸 出 格 式; ---- IF, ELSE, ENDIF 變 量 條 件 判 斷 語 句; ---- IFNEW 判 斷 經 過 對 某 一 字 段 排 序 的 表 是 否 該 字 段 的 值 發 生 了 變 化; ---- INCLUDE 讀 入 另 一 摸 板 文 件; ---- OPTIONLIST 從 查 詢 結 果 產 生 一 個HTML 的「SELECT OPTION」 命 令; ---- OUTPUT 把 結 果 輸 出 到 磁 盤 文 件; ---- SET 對 變 量 賦 值; ---- SQL 執 行ODBC SQL 語 句; ---- TABLE 自 動 格 式 化SELECT 語 句 的 結 果 到HTML 格 式。 ---- 從 以 上 命 令 可 以 看 出,ODBIC 軟 件 功 能 的 強 大, 通 過IF-ELSE- ENDIF 和SET 命 令, 可 以 編 寫 實 現 很 多 功 能, 下 面 摸 板 的 功 能 是 從SEARCH.HTML 主 頁 中 獲 取 電 話 號 碼 和 授 權 口 令, 對 所 輸 號 碼 的 明 細 進 行 查 詢, 查 詢 結 果 以 表 格 形 式 輸 出, 並 對 話 費 進 行 合 計。 摸 板 文 件 清 單 見 後( 文 件 中「//」 後 面 的 是 注 釋): 摸 板 文 件 清 單:MODEL.HTML < HTML > < HEAD > < TITLE >ODBIC-TEST-MODEL< /TITLE > < /HEAD > < BODY BGCOLOR="#ff00ff" TEXT="#FFFF00" LINK="#ff00ff" ACTIVE="#000000" VISITED="#000000" > < center > < table border=3 > < !--if '$CATE$'='ch'-- > < P >查詢號碼:$dhhm$ < !--SET HJ=0.0 -- > //設置合計話費變量的初值; < !--DATABASE DSN=telephone;UID=myloginame; PWD=$PWD$ -- > //DSN、UID、PWD分別為聯結數據庫的數據庫名、 用戶登錄名稱、 //登錄口令,這三項均可以變量的形式接收用戶輸入; < !--SQL select called,start_time,length,feI from detail where caller='$dhhm$' order by start_time -- > < !--eachrow-- > < tr >< td >$row$< /td >< td >$called$< /td >< td > $start_time$< /td >< td >$length$< /td > < td >$fei$< /td >< /tr > //變量row為ODBIC 本身提供內部變量,表示當前結果集的行 //號,ODBIC對結果集的字段名自動默認為變量; < !--set $HJ$=$HJ$+$FEI$-- > < !--endrow-- > < /table > < !--ELSE -- > < p >< front SIZE="6" COLOR="#990000" > 對不起你的口令錯誤!< /front > < !--E-- > < /center > < /BODY > < /HTML > ---- 總 上 所 述, 我 們SQL SERVER 數 據 庫 進 行 了 交 互 訪 問, 同 樣 也 可 對ORACLE、SYBASE、ACCESS、FOXPRO 系 列 等 數 據 庫 的 訪 問, 並 且 在 同 一 個 摸 板 文 件 可 以 同 時 打 開 上 述 數 據 庫, 並 把 它 們 關 聯 起 來 進 行 事 務 處 理。 對 於 廣 大 關 心 基 於WEB 的 數 據 庫 應 用 的 計 算 機 愛 好 者 來 說,ODBIC 的 確 簡 單、 易 學、 功 能 強 大, 本 文 只 是 大 致 介 紹 了 以 下, 希 望 我 的 文 章 能 起 到 拋 磚 引 玉 的 作 用, 歡 迎 朋 友 門 交 流、 指 導。 |
| webasp.net |