分享
 
 
 

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

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1前言

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

2系统的开发、运行环境

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

CLIENT端为486以上微机,16M以上内存,硬盘足够大,通过HUB、路由器、MODEM和SERVER连接。开发、运行平台是WIN95,安装了网络软件ONNET、ORACLECDE产品SQL*NETV2。开发工具是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!)

iffn-1then

fileread(fn,text)

fileclose(fn)

//并转换为文本

article=string(text)

s=len(article)

forv=1tos

t=pos(article,char(13)+char(10),v)

ift0then

article=replace(article,t,2,"")

else

endif

next

mle_1.text=article

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

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

text1=blob(article)

filname="c:\bb.txt"

fn=fileopen(filname,streammode!,

write!,lockwrite!,replace!)

iffn-1then

filewrite(fn,text1)

fileclose(fn)

endif

//文本入库

nr1=blob(mle_1.text)

updateblobgljwjsetnr=:nr1wherebh=:pass_parm

andzwrq=:fsjandwjbs=:fl5usingsqlca;

commit;

//放入MLE中查询

selectblobnrinto:nr1fromgljwjwherebh=:pass_parm

andwjbs=:fl5andzwrq=:fsjusingsqlca;

mle_1.text=blob(nr1)

3.2.2从库中重新生成文本文件filename.txt并存盘

selectnrinto:filenfromfwgswherebh=:bh1

andlwrq=:zwrq1usingsqlca;

fname="c:\filename.txt"

fh=fileopen(fname,streammode!,write!,lockwrite!,replace!)

iffh-1then

filewrite(fh,filen)

fileclose(fh)

endif

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

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

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

fn=fileopen(picname,streammode!)

iffn-1then

fileread(fn,pict)

fileclose(fn)

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

setpicture(p_1,pict)

endif

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

updateblobpicsetbmpt=:pict;

commit;

较大的图象文件一次不能入库,可采取分割图形的方式,分块存入,因为LONG字段所存放的数据大小一般是没限制的(可存放2G的内容)。

4开发应用经验

4.1建议CLIENT端通过SQL*NETV2进行ORACLE数据通信(不用SQL*NETTCPV1产品)

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

ORACLECDE2和Developer2000提供了CLIENT端ORACLE产品的安装程序ORAINST.EXE,运行该文件来安装SQL*NETV2,选择的产品有:

aORACLETCP/IPADPTER2.1.4.1.3

bsql*net2.1.4.1.4

在WIN95下,网络软件产品(Tcp/IPVendor)选择MicrosoftwindowsNTTcp/IP3.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,"/")

ifa8=1then

password=left(sle_1.text,a8-1)

newpassword=mid(sle_1.text,a8+1,len(sle_1.text)-a8)

endif

selectdwbminto:dmfromdwwheremm=:password;

sle_1.text=""

ifsqlca.sqlcode0then

messagebox("警告:","口令错!")

pw=pw+1

ifpw=3then

close(w_bg_main)

endif

else

mm=dm

ifa8=1then

a7=messagebox("提示信息","确定要修改口令吗(y/n)?

",information!,YesNo!,2)

ifa7=1then

selectdwbminto:a9fromdwwheremm=:newpassword;

ifsqlca.sqlcode100ornewpassword=""then

messagebox("提示信息","新口令错!")

gotoend1

else

updatedwsetmm=:newpassword

wheremm=:password;

messagebox("请记住新口令",string(newpassword))

commit;

endif

endif

endif

4.3用EXCEL输出精美表格

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

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

dw_1.SaveAs("c:\glxx.xls",excel!,true)

4.4正确使用日期型数据

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

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

updatetabsetrq='1-Feb-96';

commit;

5结束语

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有