天天看点

读写关系数据库资料

在Notes数据库中,可以通过公式函数和Script读写其他关系数据库资料,本文就是举例讲解如何通过程序读写关系数据库,为了方便,以通过ODBC访问TXT文件数据库格式举例。

一、设置ODBC数据源

Notes是通过ODBC数据源来访问关系数据库,但其他特殊数据库,如DB2,ORACLE等,有特殊的形式,不再此处解释。

1、在操作系统的控制面板中,打开“ODBC数据源”。

2、在“用户DSN”中单击“添加”,增加一个新的数据源。

3、选择数据源的驱动程序,本例选择“Microsoft Text Driver(*.txt,*.csv)”,单击“完成”。

4、在“ODBC文本安装中”输入:

· 数据源名称:此名称将是Notes访问ODBC数据库的识别名称,区分大小写,本例使用“TESTXT”。

· 描述:解释说明,可以缺省

· 目录:指定数据库的表单位置。本例为“c:txt”

· 注:真正的数据库文件应该是一个包括若干表单的文件数据资料库,如*.nsf数据库文件,而*.TXT,*.DBF等文件不能叫数据库,只能是属于数据库中的一个表单。因此需要指定其文件所属的数据库文件,即目录地址,表示此目录下的所有*.txt文件都属于此数据库中的表单。

5、在定义格式中,需要指定*.txt文件字段之间的分隔符,此例为"Tab"

6、在指定*.txt表单的字段名称,本例为:

· Field_Char:字符类型,10位

· Fidle_Int:整数类型

7、全部完成后,在“用户DSN”中可以看到“TESTXT”,表示ODBC数据库设置完成。

8、在“c:txt”目录中新建一个"abc.txt"文件,需要使用英文文件名称,数字有些问题,内容为

"aa"    1(用TAB分隔)

"bb"    2

二、利用Notes函数访问数据库

1、@DbColumn:检索指定的DBMS、表和列,并返回该列的所有值。

本例返回所有记录中的字段Table_Char的值:

@DbColumn("ODBC" : "NoCache" ; "TESTXT" ; "";"";"ABC.TXT" ;"Table_Char" )

返回"aa":"bb"

2、@DbLookup:检索指定的 DBMS,表和列,并对那些关键字列的值和指定的关键字匹配的记录返回该列的值。

    本例搜索字段Table_Char = "aa"的记录,并返回其字段Table_Int的值:

    @DbLookup("ODBC":"NoCache";"TESTXT";"";"";"ABC.TXT";"Table_Int";"";"Table_Char";"aa")

    返回:1

说明:这两条公式函数都能返回数据库,可以在域初始值的计算公式中使用,建议最好使用LotusScript来代替这两个函数,因为这两个函数对访问错误比较难捕获和处理。

三、利用Script读取数据库

使用LotusScript访问数据库的完整函数:

注意:使用LotusScript访问数据库一定要在(Options)中加入Uselsx "*LSXODBC"命令

Sub Click(Source As Button)                

    Dim con As New ODBCConnection

‘定义ODBC连接对象

    Dim qry As New ODBCQuery

‘定义ODBC执行对象

    Dim result As New ODBCResultSet

‘定义ODBC结果处理对象

    On Error Goto errorHandler

‘如果有错误,就显示错误信息

    Set qry.Connection = con

    Set result.Query = qry

    con.ConnectTo("TXTEST")

‘激活连接TESTXT数据库

    qry.SQL = "SELECT Table_Chat,Table_Int FROM ABC.TXT"

‘决定对表单的“ABC.TXT”的字段Table_Char,Table_Int进行处理

    result.Execute 

‘执行SQL命令

    maxrow = result.MaxRows

‘获得表单的记录数

    Call result.FirstRow

‘定位第一条记录

    Do

        aa = result.GetValue("Table_Char")

        bb = result.GetValue("Table_Int")

        Print aa,bb

‘将返回的值,打印显示

        Call result.NextRow

‘继续下一条记录

    Loop While maxrow > result.CurrentRow

‘如果搜索到最后条记录,退出循环

    result.Close(DB_CLOSE)

    con.Disconnect

Exit Sub

errorHandler:

    Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage

    Exit Sub

End Sub

四、利用Script写入数据库

本函数仅加入了一条记录,你可以使用循环,将Notes数据库中的值加入到ODBC中。

    result.AddRow

‘增加一行记录

    Call result.SetValue("Table_Char","cc")

    Call result.SetValue("Table_Int",3)

    result.UpdateRow

‘将增加的记录更新到数据库文件中

‘关闭数据库,断开连接

五、Notes数据库和关系数据库的区别

关系数据库 NOTES数据库 DBF数据库
数据库文件 NSF数据库文件 文件目录
表单 视图 DBF文件
记录 文档
字段 列值