数据库管理信息系统:开发基于ORACLE7数据库的管理信息系统

作者:袁海兰 [胜利石油管理局第 6中学]

1 前 言

开 发 高 水 平 “ 管 理 信 息 系 统” 选 择 性 能 优 越 数 据 库 是 最 重 要 我 们 经 过 多 方 面 调 研 和 分 析 选 择 了ORACLE7 数 据 库 成 功 地 开 发 了 本 系 统 实 践 证 明 本 系 统 设 计 科 学、 合 理、 运 行 稳 定 本 文 将 具 体 阐 述 下 系 统 中 应 用ORACLE7 数 据 库 方 法 和 技 术

2 系 统 开 发、 运 行 环 境

本 系 统 在CLIENT/SERVER 结 构 上 运 行SERVER 为CDC 4360 小 型 机 和 快 速FDDI 环 网 相 接 内 装 有UNIX 操 作 系 统 和ORACLE7 数 据 库 系 统 总 体 网 络 协 议 为TCP/IP

CLIENT 端 为486 以 上 微 机16M 以 上 内 存 硬 盘 足 够 大 通 过HUB、 路 由 器、MODEM 和SERVER 连 接 开 发、 运 行 平 台 是WIN95 安 装 了 网 络 软 件ONNET、ORACLE CDE 产 品 SQL*NET V2 开 发 工 具 是POWERBULDER5.0( 以 下 简 称PB5)、VB4 等

3 ORACLE7 在 系 统 中 各 种 应 用

3.1 般 性 数 据 管 理

般 性 数 据 管 理 用 数 据 窗 口 管 理 最 方 便 可 以 在 数 据 窗 口 中 进 行 表 增、 删、 改、 查 询 等 操 作 下 边 是 些 具 体 例 子(PB5):

3 .1 .1 连 通ORACLE 库 并 将 数 据 装 入 数 据 窗 口:

dw_1.SetTransObject(sqlca)
dw_1.Retrieve
3 .1 .2 增 加 条 记 录

dw_1.InsertRow(dw_1.GetRow( ) + 1)
3 .1 .3 删 除 条 记 录( 当 前 记 录)

dw_1.DeleteRow(0)
3 .1 .4 将 数 据 提 交 入 库( 存 盘)

dw_1.Update( )
commit;
3 .1 .5 打 印 数 据 窗 口( 表) 中 数 据

dw_1.pr
3 .2 文 字 类 数 据 管 理

3 .2 .1 文 本 入 库 和 查 询

文 本 入 库 和 查 询 可 采 用PB5 MLE( 多 行 编 辑 器) 作 界 面 编 辑 完 成 后 存 入ORACLE7 LONG 字 段 中 查 询 时 从LONG 字 段 中 取 出 放 入MLE 中 查 询 下 边 是 个 例 子:

//文本预处理(以去除文本文件中回车换行符为例介绍说明)
//将文件读入BLOB型变量
text中fn=fileopen(txtname,streammode!)
fn< > -1 then
fileread(fn,text)
fileclose(fn)
// 并 转 换 为 文 本
article=(text)
s=len(article)
for v=1 to s
t=pos(article,char(13)+char(10),v)
t >0 then
article=replace(article,t,2,"")

end
next
mle_1.text=article
//将处理后文件c:\bb.txt存盘
文件中回车换行符已全部去掉
text1=blob(article)
filname="c:\bb.txt"
fn=fileopen(filname,streammode!,
write!,lockwrite!,replace!)
fn< >-1 then
filewrite(fn,text1)
fileclose(fn)
end
//文本入库
nr1=blob(mle_1.text)
updateblob gljwj nr=:nr1 where bh=:pass_parm
and zwrq=:fsj and wjbs=:fl5 using sqlca;
commit;
// 放 入MLE 中 查 询
selectblob nr o :nr1 from gljwj where bh=:pass_parm
and wjbs=:fl5 and zwrq=:fsj using sqlca;
mle_1.text=blob(nr1)
3 .2 .2 从 库 中 重 新 生 成 文 本 文 件filename.txt 并 存 盘

select nr o :filen from fwgs where bh=:bh1
and lwrq=:zwrq1 using sqlca;
fname="c:\filename.txt"
fh=fileopen(fname,streammode!,write!,lockwrite!,replace!)
fh< >-1 then
filewrite(fh,filen)
fileclose(fh)
end
3 .3 处 理 图 象 文 件( 大 2 进 制 文 件)

图 象 文 件( 般 为BMP 位 图 文 件) 是 2 进 制 文 件 将 其 以 数 据 流 方 式 存 入ORACLE7 LONG 字 段 中 查 询 时 从LONG 字 段 中 取 出 放 入 图 象 框( 如p_1) 中 查 询 下 边 是 个 例 子:

// 将 图 象 文 件 读 入BLOB 型 变 量pict 中
fn=fileopen(picname,streammode!)
fn< > -1 then
fileread(fn,pict)
fileclose(fn)
// 将 图 象 放 入 图 象 框p_1 内 查 看
picture(p_1,pict)
end
// 将 图 象 存 入 表pic LONG 字 段bmpt 中
updateblob pic bmpt=:pict ;
commit;
较 大 图 象 文 件 次 不 能 入 库 可 采 取 分 割 图 形 方 式 分 块 存 入 因 为LONG 字 段 所 存 放 数 据 大 小 般 是 没 限 制 ( 可 存 放2G 内 容)

4 开 发 应 用 经 验

4 .1 建 议CLIENT 端 通 过SQL*NET V2 进 行ORACLE 数 据 通 信( 不 用SQL*NET TCP V1 产 品)

因 为 在ORACLE7 推 出 以 后SQL*NET V1 就 没 有 做 些 改 进 工 作 继 续 支 持 到ORACLE7.2, ORACLE7.3 以 后 产 品 将 不 支 持SQL*NET TCP V1 所 以ORACLE7 用 户 应 立 即 改 用SQL*NET V2 不 然 会 影 响 到 库 运 行 稳 定 性

ORACLE CDE2 和Developer 2000 提 供 了CLIENT 端ORACLE 产 品 安 装 程 序ORAINST.EXE 运 行 该 文 件 来 安 装SQL*NET V2 选 择 产 品 有:

a ORACLE TCP/IP ADPTER 2.1.4.1.3
b sql*net 2.1.4.1.4
在WIN95 下, 网 络 软 件 产 品(Tcp/IP Vendor) 选 择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 测 试 连 接 情 况

首 先 要 作 好 这 3 件 工 作:

4 .2 采 取 数 据 加 密 技 术

对 用 户 来 说 查 询 信 息 是 有 权 限 若 想 查 询 某 项 保 密 数 据 需 正 确 地 键 入 密 码 才 能 查 到 面 对 同 台 微 机 谁 能 正 确 地 键 入 密 码 谁 就 能 做 查 询 该 系 统 通 过 自 定 义 些 复 杂 函 数 运 算 产 生 密 码 从 表(TABLE) 中 找 不 到 密 码 数 据 通 过 这 种 精 密 设 计 处 理 达 到 了 数 据 保 密 要 求 下 边 是 密 码 修 改 和 识 别 段 程 序(PB5) :

password=sle_1.text
a8=pos(sle_1.text,"/")
a8 >=1 then
password=left(sle_1.text,a8 - 1)
password=mid(sle_1.text,a8+1,len(sle_1.text) - a8)
end
select dwbm o :dm from dw where mm=:password;
sle_1.text=""
sqlca.sqlcode< >0 then
messagebox(" 警 告:"," 口 令 错 !")
pw=pw+1
pw >=3 then
close(w_bg_)
end

mm=dm
a8 >=1 then
a7=messagebox("提示信息","确定要修改口令吗(y/n)?
",information!,YesNo!,2)
a7=1 then
select dwbm o :a9 from dw where mm=:password;
sqlca.sqlcode< >100 or password="" then
messagebox(" 提 示 信 息"," 新 口 令 错 !")
goto end1

update dw mm=:password
where mm=:password;
messagebox("请记住新口令",(password))
commit;
end
end
end
4 .3 用EXCEL 输 出 精 美 表 格

用VC 或PB5 将ORACLE 库 中 数 据 生 成 文 本 或EXCEL 文 件 再 通 过EXCEL 数 据 链 接 将 对 应 数 据 调 入 事 先 定 义 好 EXCEL 标 准 输 出 表 中 按 用 户 要 求 输 出

PB5 生 成EXCEL 格 式 文 件 SCRIPT 语 句 举 例 如 下:

dw_1.SaveAs("c:\glxx.xls",excel!,true)
4 .4 正 确 使 用 日 期 型 数 据

在 库 操 作 过 程 中 若 日 期 变 量 值 定 义 错 了 将 提 示SQL 语 句 出 错 信 息 错 误 现 象 非 常 隐 蔽 不 好 察 觉 这 是 编 程 过 程 中 常 见 错 误 在 此 特 别 强 调 个 例 子:

若 日 期 数 据 为 常 量 要 按 下 列 格 式 赋 值( 用 update 语 句 说 明):

update tab rq='1-Feb-96';
commit;
5 结 束 语

该 系 统 开 发 和 应 用 使 我 们 更 加 体 会 到 了ORACLE 数 据 库 优 越 性 本 系 统 开 发 成 功 和 此 是 分 不 开 我 们 将 做 进 步 探 索 用 先 进 开 发 工 具 和 升 级 ORACLE8 开 发 面 向 网 络 和 多 媒 体 “ 管 理 信 息 系 统” 
Tags:  oracle7启动 信息系统与数据库 数据库信息系统 数据库管理信息系统

延伸阅读

最新评论

发表评论