Domino和关系数据库进行交互是日常项目开发中经常涉及到的一个方面,每个domino开发人员都写过这样的程序,本文就这个方面做一下简单的总结。 一、工具篇 1、使用LEI(Lotus Enterprise Integrator) LEI的英文全称是Lotus Enterprise Integrator ,它是以前大家熟知的NotesPump的升级产品,是基于服务器的数据分布产品,提供了定义和管理以下事物的环境: *大量的数据交换 *数据同步 :事件驱动和实时的数据传输 LEI服务器处理指令,建立到外部数据源的连接,按照定义好的活动的条件来传输数据.它要求Domino 4.6x 或 5.x以上版本的服务器,可以单独运行,也可以作为一个内部的服务器任务运行. Lotus Enterprise Integrator (LEI) 6.x 可以将附件从 Domino 数据库移到 RDBMS 表中,从而可以从 RDBMS 内读取这些附件。更重要的是,此项操作可以快速进行,而不需要编写任何脚本代码。关于此方面,IBM官方网站上有对此操作的详细步骤说明,有兴趣的同行可以阅读一下,链接:http://www.ibm.com/developerwork ... achments/index.html 2、DESC(Domino Enterprise Connection Services ) DECS的英文全称是Domino Enterprise Connection Services ,是LEI的子集,它仅仅是实时的Notes活动.DECS是一个基于向导器的服务器任务,包含于Domino 4.6.3及其以后的版本.它修改NOTES.INI文件以包括实时的扩展:extmgr_addins=ndecsext.dll (for NT) 下面,介绍一下DECS的用法,本文将以一个非常简单的例子为大家说明一下使用过程,更复杂的使用,大家可以据此做更深入的研究。我们以用notes导入一个Access数据库为例(该数据库已注册到ODBC中)  预备工作:  保证有你要导入的Notes数据库。  保证有Access数据库  保证ODBC已经加入该Access数据库数据源。  第一步:  如果你是第一次使用DECS,请查看你的服务器的DATA目录下是否有decsadm.nsf的数据库,如果没有这个数据库,要以Domino自带的名为decsadm.ntf的模板建立本数据库,关于DECS的相关设置都会在本数据库中进行。 第二步:  在服务器的控制台上输入Load DECS, 第三步: 任务启动后,打开服务器上的Decsadm.nsf数据库。  第四步:  单击"Create Connection",创建一个连接。选择你要创建的数据库类型(DB2,Or I acle,ODBC)。本例选择ODBC. 第五步:  打开连接表单后:  表单中有以下几项:  Data Source:输入数据源。  本例中输入ODBC中你要连接的数据源的名字。  Username:输入能访问该数据源的用户名。 Password: 输入能访问该数据源的用户密码  Password encryption key:单击后对你填入的用户密码,在Notes中加密。  Selection Type:你选择的类型是Table ,还是View  :选择Table的拥有者。 Name: 选择你要连接哪一个Table.  填完后保存退出。 第六步:  单击"Create Activity",创建一个"动作"。系统提供了一个动作向导,单击"Create Activity",系统打开表单后弹出一个动作向导,如果你确定使用的话,单击"确定"。 选择你要导入到哪个Notes数据库。  选择你要导入到该数据库的哪个表单。  选择你使用哪个"连接"(第四步创建的)  选择你到导入外部数据库的哪个Table和View.  这时会出来Key和数据域的映射。 Key:是你的主索引。  Field:是你要分别对应的字段。  在左边选择Notes的域,右边选择外部数据库的字段。 选择你对外部数据库的动作Open,create,update,delete  输入你为该导入动作取的名字。然后保存关闭当前文档。 第七步: 1.查看"Activities"导航,选定你要激活哪个"动作"  单击"Start",启动该动作。  如果不成功,你单击"log",如果你想停止该动作请单击"Stop"  图标说明:第一个图标表示该动作没激活,第二个图标表示动作正在激活,第三 个图标表示动作已激活。  第八步: 1.打开你要导入的Notes数据库,用你刚才第六步第2点的表单创建文档。  在你对应KEY的域中输入输入外部数据库的某一个数据。如:如果我把Access 数据库中table的ID字段作为key,而对应notes中的test域,那么我们就应该在test域中输入:如:"10203"  保存当前该文档。  第九步:  在视图中打开刚才创建保存的Notes文档。我们就会发现在其他映射的域都会出现 对应在外部数据库中的数据。这样外部数据库中的数据就引入到了Notes中了。 DECS与LEI存在一定的区别,大致可以概括为: 1 LEI提供了一个多功能的数据访问工具集,可以对其编程;DECS仅限于事先定义好的功能;2 LEI能处理大规模的数据传输,DECS仅工作在文档级;3 LEI 能适用于两个非Notes的数据源,DECS要求Notes作为一个数据源。 3、和DB2的数据交互 Domino在发布版本7的时候,就提供了Domino和DB2的数据集成功能,只是在这个版本上,IBM也只是做一下尝试,并不对此项功能进行技术支持以及其它的相关服务,随着Domino8的发布,IBM官方声明Domino8已经支持这个功能了,个人感觉,这里与其说是和DB2的数据交互,不如叫和DB2的数据共享。按照IBM提供的相关帮助文档,进行正确的配置以后,就可以达到将所有Domino的数据移植到DB2中,使Domino中的数据库只剩一个躯壳,所有真正的数据都存在DB2中,我查看了一下,这样配置之后,Domino中的数据库仅剩10几个字节,但是对用户来说,没有任何变化,这个功能非常强大,只可惜目前只支持DB2关系数据库,毕竟数据库也是人家自己的东西,也许在不久的将来会支持其它流行关系数据库吧,期待ing!对于这方面的使用,大家仔细参考帮助照做即可,这里就不多说了。 二、程序篇 1、使用ODBC 使用这个解决方案的前提条件,下面两个条件必具其一: a、程序是运行在客户端,即:CS模式,且客户端所在操作系统是window系列; b、程序运行在服务器,且服务器所在操作系统是windows系列; 本解决思路主要是使用Domino提供的三个类:ODBCConnection、ODBCQuery、ODBCResultSet,暂时手头上还没有这方面的例子,所以就不提供了,如果有的兄弟,请发上来,我编辑到本文章中,提前谢了。大家同样可以参考Designer的帮助,找到一些启示。 2、使用JDBC 一般情况下,不建议在Domino编程中使用java,这个众所周知,Lotus对Java的支持实在不敢恭维,但是如果受客观条件的限制,只能用JDBC,那就没办法了,比如我们公司,bs结构,服务器所在操作系统是Solaris,使用工具肯定不会去考虑,也不具备使用ODBC的条件,只能赶鸭子上架了,不过一般情况下,如果程序比较健壮,对于一些java对象做了合理的释放,短期内应该不会出现什么问题。言归正传,使用步骤: a、找到oracle的jdbc驱动包:class12.jar; b、或可在建立代理后,直接在设计端引入该jar包;或将该jar包上传到服务器,修改Notes.ini文件,增加JavaClasses参数进行引入; c、下面给出一小段代码,这个相信大家也都很熟悉了,就不多说了,不过多一嘴,如果确认你所有的步骤都操作正确,java代理还是不能正确运行的话,可以尝试将代理的安全限制设置为:允许受限操作。 import lotus.domino.*; import java.sql.*; public class JavaAgent extends AgentBase { public void NotesMain() { Connection conn = null; Statement stmt = null; ResultSet rs = null try { Session session = getSession();    AgentContext agentContext = session.getAgentContext();    Class.forName("oracle.jdbc.driver.OracleDriver");    String url = "jdbc racle:thinIP地址:1521 ROD";    String user = "***";    String password = "***";    conn = java.sql.DriverManager.getConnection(url,user,password);    stmt = conn.createStatement(); String sql = "select * from ra_salesreps_all"; rs = stmt.executeQuery(sql);    while(rs.next()){ System.out.println(rs.getString("name"));   } } catch(Exception e) { { e.printStackTrace();   }finally{   try{     rs.close();     stmt.close(); conn.close();    }catch(SQLException sqle){ System.out.println(sqle); } } } }

Lotus Domino和关系型数据库(LEI,DESC,JDBC连接)的更多相关文章

  1. [转载]资深程序员点评当前某些对Lotus Domino 的不实评论

    实现机关办公自动化工作需要计算机技术的支持,在计算机软件范围中,有网络操作系统软件.数据库软件和开发工具等基本系统软件,在此基础上开发出适合本单位使用的应用软件.对如何选用系统软件,笔者没有发言权,但 ...

  2. XPages访问关系型数据库技术与最佳实践

    XPage 对于 Domino 开发人员的一大好处就是能够很方便和高效的访问关系型数据库.本文通过实例代码展现了在 XPage 中访问关系型数据库的具体步骤 , 同时讲解了一些在 XPage 中高效访 ...

  3. JDBC连接各种数据库的方法,连接MySql,Oracle数据库

    JDBC连接各种数据库的方法: JDBC编程步骤: 1.导入jar包 2.注册驱动 3.获取数据库连接对象 4.定义SQL语句 5.获得执行SQL语句对象statemnet 6.执行SQL语句 7.处 ...

  4. jdbc-connect-oracle12c-pdb/cdb(jdbc连接oracle12c的pdb和cdb)

      1       本文简介: 通过特意引发问题,聚焦问题,解决问题,并循序渐进 最后总结jdbc连接oracle12c中cdb和pdb的条件. 软件环境:Redhat7.1+orcacle12c 2 ...

  5. 创建一个jdbc连接

    本文介绍如何建立一个jdbc连接进行数据库查询操作. 创建一个java工程,导入jar包. 作者使用mysql数据库,建立jdbc连接需要mysql数据库驱动jar包和jdbc连接jar包. 建立jd ...

  6. JDBC批处理读取指定Excel中数据到Mysql关系型数据库

    这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果. 关于JDBC的批处理还可以参考我总结的如下博文: ...

  7. 使用 Logstash 和 JDBC 确保 Elasticsearch 与关系型数据库保持同步

    为了充分利用 Elasticsearch 提供的强大搜索功能,很多公司都会在既有关系型数据库的基础上再部署Elasticsearch.在这种情况下,很可能需要确保 Elasticsearch 与所关联 ...

  8. JDBC连接MySQL数据库基础

    主要内容 MySQL的基本操作和基本SQL语法 使用JDBC进行MySQL数据库的开发 使用DriverManager.Connection.PreparedStatement.ResultSet对数 ...

  9. Lotus Domino开发心得(一)

    —- Lotus Domino 是当今办公自动化系统的主流开发平台之一,目前大部分企业和机构都在使用Lotus Domino 开发自己的无纸办公系统.在开发过程中,我积累了一些小技巧,现在公布出来,希 ...

随机推荐

  1. Java中线程池,你真的会用吗?

    在<深入源码分析Java线程池的实现原理>这篇文章中,我们介绍过了Java中线程池的常见用法以及基本原理. 在文中有这样一段描述: 可以通过Executors静态工厂构建线程池,但一般不建 ...

  2. [转]微信JSAPI 微信内置JSAPI 2015年1月官方正式API接口,分享完整实例

    FROM : http://www.oschina.net/code/snippet_2276613_45290 HTML通过微信,分享朋友圈出发此JSAPI <?php require_onc ...

  3. 洛谷 P1082 同余方程

    题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正 ...

  4. 案例导入和导出Scott用户

    ylbtech-Oracle:案例导入和导出Scott用户  导入和导出Scott用户 1. 导出Scott用户下的所有对象返回顶部 1.1, Microsoft Windows [版本 ] 版权所有 ...

  5. go语言之进阶篇字符串操作常用函数介绍

    下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档. 一.字符串操作常用函数介绍 1.Contains func Contains(s, substr st ...

  6. ScaleIO 1.32现在可以免费下载安装使用了(除生产环境之外)

    EMC World 2015会上宣布, ScaleIO 1.32可以免费下载使用在非生产环境上了. 这个可以免费下载的版本叫做Free and Drictionless (F&F) downl ...

  7. iOS开发-消息通知机制(NSNotification和NSNotificationCenter)

    iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页 ...

  8. Android -- EventBus使用

    EventBus EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间的通信.比如请求网络,等网络返回时通过Handler ...

  9. Linux下逻辑地址-线性地址-物理地址图解(转)

    一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序 ...

  10. 是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?

    错误提示 : 预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入 是否缺少对 Microsoft.CSharp.dll 和 System.Core ...