导入包含Domino命名空间的dll:Interop.Domino.dll。
安装notes客户端。
访问domino是由建立一个NotesSession对象开始的。所以第一个问题是NotesSession对象的初始化。NotesSession对象的Initialize(string password)方法,直观却有些让人费解,因为即使没有接触过domino的人也知道建立一个会话,需要的是用户名和密码,而这里的方法只有一个password参数。这里的道理不用深究,因为notes客户端会根据系统中的user.id文件找到用户名信息,而密码部分就是要验证的事情了。如果有做过domino开发的人,对这部分应该有更深的理解。
从domino数据文件中得到数据清单,并整理到DataTable中。


1
NotesSession ns
=
new
NotesSession();
2 ns.Initialize( " 密码 " );
3 if (ns != null )
4 {
5 db = ns.GetDatabase( " DOMINO服务器地址 " , " 数据文件地址 " , false );
6 view = db.GetView( " 视图名 " );
7 NotesDocument doc = view.GetFirstDocument();
8 DataTable dt = new DataTable();
9 DataColumn dc = new DataColumn( " 列名1 " );
10 dt.Columns.Add(dc);
11 dc = new DataColumn( " 列名2 " );
12 dt.Columns.Add(dc);
13 while (doc != null )
14 {
15 DataRow dr = dt.NewRow();
16 Object[] oba = (Object[])doc.ColumnValues;
17 string colm1, colm2;
18 colm1 = oba[ 0 ].ToString();
19 colm2 = oba[ 1 ].ToString();
20 dr.BeginEdit();
21 dr[ " 列名1 " ] = colm1 ;
22 dr[ " 列名2 " ] = colm2 ;
23 dr.EndEdit();
24 dt.Rows.Add(dr);
25 doc = view.GetNextDocument(doc);
26 }
27 }
2 ns.Initialize( " 密码 " );
3 if (ns != null )
4 {
5 db = ns.GetDatabase( " DOMINO服务器地址 " , " 数据文件地址 " , false );
6 view = db.GetView( " 视图名 " );
7 NotesDocument doc = view.GetFirstDocument();
8 DataTable dt = new DataTable();
9 DataColumn dc = new DataColumn( " 列名1 " );
10 dt.Columns.Add(dc);
11 dc = new DataColumn( " 列名2 " );
12 dt.Columns.Add(dc);
13 while (doc != null )
14 {
15 DataRow dr = dt.NewRow();
16 Object[] oba = (Object[])doc.ColumnValues;
17 string colm1, colm2;
18 colm1 = oba[ 0 ].ToString();
19 colm2 = oba[ 1 ].ToString();
20 dr.BeginEdit();
21 dr[ " 列名1 " ] = colm1 ;
22 dr[ " 列名2 " ] = colm2 ;
23 dr.EndEdit();
24 dt.Rows.Add(dr);
25 doc = view.GetNextDocument(doc);
26 }
27 }
这里需要提到的是dynamic cast 运行期绑定的代码,需要做类型转化。