科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Domino 代理技术: ODBC 连接

Domino 代理技术: ODBC 连接

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

偶尔,我们需要查询Domino以外的数据和关系很远的关系型数据库世界。这时, 我们就会使用那些熟悉的工具来存取关系型数据库中的信息,这就使得ODBC迅速 发展起来

作者:www.chinaitpower.com 来源:www.chinaitpower.com 2007年9月11日

关键字: 技巧 ODBC Domino lotus Office

  • 评论
  • 分享微博
  • 分享邮件

偶尔,我们需要查询Domino以外的数据和关系很远的关系型数据库世界。这时,
我们就会使用那些熟悉的工具来存取关系型数据库中的信息,这就使得ODBC迅速
发展起来,此外不仅ODBC可以把Domino和关系型数据库连接起来,而且你可以用
LotusScript写一个代理。

当你需要在你的DB2/Oracle/Access数据库上运行一个查询并把输出结果作为一个
易读的网页给第三方看时将会发生什么情况呢?这时我们就需要真正考虑在Domi
no中ODBC了。所以这就是我们的理想状况:我们要从Notes客户端上运行一个SQL
在外部数据源中查询数据,然后产生一个输出,可以让用户通过Web和Notes查看


这个算法很简单:


连接外部数据源


从用户端取得SQL查询


运行SQL查询


产生输出


关闭数据源连接

好了,如果你不懂SQL,那么这部分代码可能是整个代理中最难的部分。而其他的
事情相对来说比较简单(如果你通过学习下面的代码所表示的算法)。这个代理
被用于从操作菜单中激活。并在Notes文档的表单上产生输出,毕竟,如果没有必
要的话,又何必绕弯子去建立一个HTML的加载呢?把数据库该为即将接受输出的
那个数据库,并且把连接改到即将被查询的ODBC数据源。(记住:你必须首先设
置好ODBC连接,否则下面的代码不会工作的。)

'-- declare all variables

Dim session As New NotesSession

Dim db As NotesDatabase

Dim doc As NotesDocument

Dim view As NotesView

Dim display As NotesItem

Dim con As New ODBCConnection 

Dim qry As New ODBCQuery 

Dim result As New ODBCResultSet 

Dim dvdTitle As String

Dim studio As String

Dim avail As String

Dim query_input As String

Dim defaultQuery As String

 

Set db = session.CurrentDatabase

Set doc = New notesDocument(db)

Set view = db.GetView("ODBCView")

Set display = New notesItem(doc, "display", "")

 

'-- set up connection to external data source, Access database

Set qry.Connection = con

Set result.Query = qry

con.ConnectTo("ex_database")

 

'-- get SQL from user

defaultQuery = "SELECT * FROM [table]"

query_input = Inputbox("Defaults to: " & defaultQuery, "SQL statement"
, qry.SQL)

If query_input = "" Then query_input = defaultQuery

 

'-- run SQL query

qry.SQL = query_input

result.Execute

 

'-- generate output from query

Do 

result.NextRow

dvdTitle = result.GetValue("DVDTITLE", dvdTitle)

studio = result.GetValue("STUDIO",studio)

avail = result.GetValue("AVAIL",avail)

display.AppendToTextList(dvdTitle & " " & studio & " " & avail)

msg = dvdTitle

Loop Until result.IsEndOfData

 

Call doc.replaceItemValue("Form", "ODBCform")

Call doc.Save(True, False)

'-- close database, and disconnect from ODBC

result.Close(DB_CLOSE)

con.Disconnect

这个代理目前连到一个包含有关DVD数据的一个小数据库。所以这个代理可能不会
正常运行,因为你不太可能拥有一个叫做“ex_database”的数据源,也不太可能
在这个数据源中有有关DVD的数据。然而,连到任何关系型数据库的原理是一样的
。提取你的真正有用的数据库中的数据,你将开始你的工作。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章