您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > LotusDomino与关系数据库的互操作
LotusDomino与关系数据库的互操作LotusDomino与关系数据库的互操作----在项目开发过程中,遇到的第一个棘手的问题是:如何把原先的关系型数据库中的内容全部导入Domino中?因为企业现在的所有数据都集中在一个关系型数据库中,因此希望Notes库能与旧的关系库互操作,而不必在数据库转换上浪费更多人力。----此外,由于LotusNotes是非结构化的数据库,而关系数据库属于结构化数据库,因此要实现两者的互操作或数据导入/导出势必需要一个专门的转换程序,而这个程序一般来说都属于附加品,要么由Lotus提供,要么由数据库厂商提供,如LotusNotes与Oracle数据库之间的转换就有专门的程序(Pump)。一般在购买Lotus产品的时候Lotus公司不会提供此类产品,如果需要可以单独购买。而对于企业来说,如果企业数据存放在不止一个关系库中,那么就需要购买若干个此类产品,而且还不一定能买的到,因此能否通过LotusScript编写一个通用的数据库转换程序就成为本次开发的难点之一。----解决这个问题用到了LotusDominoR5中提供的三个LotusNotes对象类:ODBCConnection(ODBC连接)、ODBCQuery(ODBC查询)以及ODBCResultSet(ODBC结果集)。应用这三个类并辅以LotusScript语言就能实现与关系数据库的互操作问题。----具体解决方法如下:----第一步在控制面板——32位ODBC数据源中建立用户数据源Test;----第二步在DominoR5中新建一个数据库Try,并建立一个空白表单Connection,此表单没有任何内容,然后在表单上创建一个“操作”,起名为“Read”;----第三步在“Read”操作的编程窗口中选择编程语言为LotusScript;----第四步在编程窗口的对象窗口中点击“Option”事件,并写入如下脚本:----Uselsx*lsxodbc//使用LotusScript扩展对象中的ODBC类----第五步选中“Declare”事件,在其中写入:DimsessionAsNotesSessionDimdbAsNotesDataBaseDimdocAsNotesDocumentDimqryAsODBCQueryDimresultAsODBCResultSetDimconAsODBCConnection定义程序中使用到的各种对象。第六步选中“Click”事件,在其中写入:SubClick(SourceAsButton)'SetNewValueSetsession=NewNotesSessionSetcon=NewODBCConnection//新建ODBCConnection对象实例Setqry=NewODBCQuery//新建ODBCQuery对象实例Setresult=NewODBCResultSet//新建ODBCResultSet对象实例'取得当前数据库信息Setdb=session.CurrentDataBaseSetdoc=NewNotesDocument(db)//新建文档doc.form=connection//新建文档的表单指向connectionCallcon.Disconnect()//保证con对象当前没有连接其他数据源Ifcon.ConnectTo(test)Then//如果连接成功Setqry.connection=con//将建立好连接的con交给query对象qry.SQL=SELECT*FROMTable1//SQL语句Setresult.Query=qry//将已经连接上数据源并写好SQL语句的query对象赋给result对象Callresult.Execute()//执行SQL语句Do//循环直到结果集为空Callresult.NextRow()//指针指向下一条记录Fori=1Toresult.Numcolumns//Numcolumns属性记录关系库中的字段个数field=result.FieldName(i)//根据字段的索引值得到字段的名字value=result.GetValue(field)//取得字段值IfIsdate(value)Then//对日期字段的特殊处理Ifvalue=Datevalue(0:00:00)Thenvalue=Elsevalue=Format(value,mm-dd-yyyy)EndIfEndIfSetitem=doc.AppendItemValue(field,value)//将关系库中的值写到Notes当前库的当前表单中NextCalldoc.save(True,True)//当一条记录的所有字段都被写入Notes库后保存此文档Setdb=session.CurrentDataBaseSetdoc=NewNotesDocument(db)//新建文档doc.form=connectionLoopUntilresult.IsEndOfDataCallcon.Disconnect()//断开与数据源的连接ElseMessagebox(Couldnotconnecttoserver)EndIfEndSub
本文标题:LotusDomino与关系数据库的互操作
链接地址:https://www.777doc.com/doc-2885484 .html