说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统-Delphi资料

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.print()

3 .2 文 字 类 数 据 管 理

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

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

//文本的预处理(以去除文本文件中的回车换行符为例说明)

//将文件读入BLOB型变量

text中fn=fileopen(txtname

streammode!)

if fn< > -1 then

fileread(fn

text)

fileclose(fn)

// 并 转 换 为 文 本

article=string(text)

s=len(article)

for v=1 to s

t=pos(article

char(13)+char(10)

v)

if t >0 then

article=replace(article

t

2

)

else

end if

next

mle_1.text=article

//将处理后的文件c:\bb.txt存盘,

文件中的回车换行符已全部去掉

text1=blob(article)

filname="c:\bb.txt"

fn=fileopen(filname

streammode!

write!

lockwrite!

replace!)

if fn< >-1 then

filewrite(fn

text1)

fileclose(fn)

end if

//文本入库

nr1=blob(mle_1.text)

updateblob gljwj set nr=:nr1 where bh=:pass_parm

and zwrq=:fsj and wjbs=:fl5 using sqlca;

commit;

// 放 入MLE 中 查 询

selectblob nr into :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 into :filen from fwgs where bh=:bh1

and lwrq=:zwrq1 using sqlca;

fname="c:\filename.txt"

fh=fileopen(fname

streammode!

write!

lockwrite!

replace!)

if fh< >-1 then

filewrite(fh

filen)

fileclose(fh)

end if

3 .3 处 理 图 象 文 件( 大 的 二 进 制 文 件)

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

// 将 图 象 文 件 读 入BLOB 型 变 量pict 中

fn=fileopen(picname

streammode!)

if fn< > -1 then

fileread(fn

pict)

fileclose(fn)

// 将 图 象 放 入 图 象 框p_1 内 查 看

setpicture(p_1

pict)

end if

// 将 图 象 存 入 表pic 的LONG 字 段bmpt 中

updateblob pic set 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 测 试 连 接 情 况。

首 先 要 作 好 这 三 件 工 作:

4 .2 采 取 数 据 加 密 技 术

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

password=sle_1.text

a8=pos(sle_1.text

/

)

if a8 >=1 then

password=left(sle_1.text

a8 - 1)

newpassword=mid(sle_1.text

a8+1

len(sle_1.text) - a8)

end if

select dwbm into :dm from dw where mm=:password;

sle_1.text=""

if sqlca.sqlcode< >0 then

messagebox(" 警 告:"

口 令 错 !

)

pw=pw+1

if pw >=3 then

close(w_bg_main)

end if

else

mm=dm

if a8 >=1 then

a7=messagebox("提示信息"

确定要修改口令吗(y/n)?

information!

YesNo!

2)

if a7=1 then

select dwbm into :a9 from dw where mm=:newpassword;

if sqlca.sqlcode< >100 or newpassword="" then

messagebox(" 提 示 信 息"

新 口 令 错 !

)

goto end1

else

update dw set mm=:newpassword

where mm=:password;

messagebox("请记住新口令"

string(newpassword))

commit;

end if

end if

end if

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 set rq='1-Feb-96';

commit;

5 结 束 语

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

在Delphi中使用flash控件 在Delphi中使用IP控件 在程序中动态取得Win95/98网络邻居中工作组及计算机名-Delphi资料 在程序中获取网络资源信息-Delphi资料 自制THyperLink组件-Delphi资料 报表制作技巧(三)-Delphi资料 Delphi数据库开发及统计表格设计 Delphi文本和图形的打印方法 Delphi应用程序中中国式报表的制作 Windows环境下实时列表输出的实现方法-Delphi资料 报表制作技巧(二)-Delphi资料 Delphi编制的程序运行中动态制作报表 报表制作技巧(一)-Delphi资料 如何在WINDOWS中控制打印字体的长宽,而不受限于SIZE 的限制-Delphi资料 也谈为Delphi中数据库报表加网格 用Delphi4的QReport部件生成报表 用Delphi编写打印程序的窍门 用Word做Delphi报表输出工具 在DELPHI 文 本 和 图 形 的 打 印 在Delphi中运用QuickReport实现多栏列印 在打印或打印预览前如何获取报表页数-Delphi资料 自定义快速报表的打印预览窗口-Delphi资料 Delphi 3 图形VCL中Bug修改方案 Delphi hint的字体和色彩如何改变 Delphi3.0中复活节彩蛋及实现 Delphi数据库应用程序开发中图像数据的存取技巧 DELPHI图形编辑技巧二则 DELPHI显示JPEG图像文件 Delphi中CANVAS使用三例 Delphi中的图形显示技巧 DELPHI中画布应用技巧 自己准备写一个工资发放和发布的程序,欢迎探讨. 襄儿妹妹还在吗?幸好偶这个马甲还有点分,全给你吧,这个ID密码她不知道呵呵~~~ 关于linux WEB服务器名的问题? 请教ATL中CBindStatusCallback的问题 我的IE不能打开新窗口?用鼠标左键点击超链接没有反应? 我的项目改变目录后打不开,怎么办? 多CPU机器,同时可有几个线程处于运行状态? 高分求高效高斯模糊算法。。 如何判断软件是否过期 是不是运行ASP.Net应用的服务器必须安装.Net FrameWork呢?还是只要有Win2000 Server和IIS就行。 谈情说爱 清除内存中用call调用的脚本文件? 一个很老的问题,如何避免CListCtrl闪烁。 请大家给看看程序:avi视频读取和重建 研究数字图像处理应该那些知识? 图片上传并显示实例(VB+SqlServer2000) SQL语言中 怎样将CHAR型转换成INT型? 級連更新... 怎么实现回车自动跳到下一个位置 如何在光标处插入字符? CSSCLASS高手关注,我想把ListBox、DropDownList样式改为平面,而且颜色边框为1颜色不为灰色,用CssClass具体怎么写呢?越详细越好?多谢 求一招:::怎么对付那些那了代码就不给钱的家伙???? =========发誓:远离csdn!================ phpmyadmin为何安装不成功? 谁有crystal reports的电子书。 这个radio的返回值是什么? 离开csdn,公布密码!!!!!!!!! 新手!求界面问题的答案! javascript面相对象的编程 IMail邮件系统的问题 七月七,我不在她身旁. 可是很想她.我爱她. 高分!求一简单问题。 今天七月七了,代表所有单身人员向全体女单身同胞问好,同时也祝成双成对的人永远快乐!! 请问php中二维数组怎么定义和初始化? 难题---SQL Panel2.Width/2;应该怎样改 求: Rational XDE 2003 (带破解的),分不够可以再加,要多少给多少,很急! 这个存储过程怎样调用? 在有限区域中打印文本,文本长度若超出,则压缩间距,否则正常显示 急,高手请进! 如何重新加载select? 怎样做一个网页编辑器(windows form)大家给个思路 强烈建议 删除 {{轰动上海大学的偷拍事件录像下载地址 (yy795188 ) }}的贴子,否则版主失职 用Authorware能够作出象隐藏在框架里的菜单吗? 我的程序需要定期执行一次,怎么写呢? 请各位大侠帮忙分析分析,我大概还有300分的可用分,解决的话,全送你了(300分) 日历 这是Mysql的BUG吗--彬、斌--如何分别查询 如何利用XML中的xsl进行信息的交换 为什么我新建项目时不行? 求教:有没有象outlook一样的文件管理软件?? 痛苦的近义词和反义词是什么? 负九是奇数吗 联合国为哪些人颁发了世界公民?为什么他们获得了世界公民奖 从9到531有多少个奇数?并不是不会做 只是在考试中等差数列求和时经常会点错.求一个好的方法保证高效率的计算出个数,而且便宜记忆. 后世人们是怎样称呼华佗 绝对值不小于5而不大于9的负奇数和是什么啊答案是35可负奇数中没有-6,-8啊是为什么呢要说明 最近去比如世界 看见有个“国际小公民”.谁参加过,怎么样啊? 大人不记小人过与大人应计小人过得辩论赛,哪位亲能提点这个辩题的点?急用,实在想不到其它还有什么比较给力的论点了,最好有点离我们比较新的例子,正方大人不计小人过,有什么给力的 汉族Y基因什么时候占领全世界 苦涩的近义词和反义词 苦涩的反义词与近义词 古巴关停“娱乐吧”美澳联手监听亚太法国两记者命丧马里俄罗斯严防“黑寡妇”袭击 确保冬奥会德国政府代表批评日本:对东亚紧张局势日本未从日俄会谈获实质成果 牵制中国教育经费管理存在多项问题 回应质疑制日本未从日俄会谈获实质成果 牵制中国多地汽车限行 分析称重污染后实行不会德国政府代表批评日本:对东亚紧张局势北京雾霾刚去 寒衣节不少市民当街焚烧东部半决赛占先机成欧足联第55个成员苏宁亚冠仍出局亚泰主帅下课亚泰主帅下课苏宁亚冠仍出局东部半决赛占先机小巴斯透露:湖人欲留5将 沃顿能够重高考志愿男女反填的正确打开方式陈鸿韬:5.5非农前有反复过程,金银喝酒脸红的人酒量大、代谢快?谁说的,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘