.net读取Lotus Domino文件数据库

Domino有组件支持.net,虽然感觉支持的不太好,但是能用,安装组件的方法很简单,在NuGet中联机搜索Domino,然后根据需要安装即可。

开发时,要在开发机上安装Notes客户端,网上很多,这里不赘述,直接上简易读取代码:

 1 NotesSession ns = new NotesSession();
 2             //ns.Initialize("test1234");
 3             ns.Initialize();
 4             if (ns == null)
 5             {
 6                 MessageBox.Show("未能初始化");
 7                 return;
 8             }
 9             //http://10.31.100.50
10             NotesDatabase db = ns.GetDatabase("", @"names.nsf", false);
11             if (db == null)
12             {
13                 MessageBox.Show("未能初始化数据库");
14                 return;
15             }
16             
17             StringBuilder sb = new StringBuilder();
18 
19             NotesView view = db.GetView("$users");
20             object[] cols = view.ColumnNames;
21             Dictionary<int, object> dic = new Dictionary<int, object>();
22             if (cols != null)
23             {
24                 int ix = 0;
25                 foreach (object obj in cols)
26                 {
27                     dic.Add(ix, obj);
28                     if (obj != null) sb.Append(string.Format("{0}\r\n", obj));
29                     ix++;
30                 }
31             }
32             NotesViewEntry ve = view.GetEntryByKey("12345");
33             if (ve != null)
34             {
35                 int ix = 0;
36                 object[] objs = ve.ColumnValues;
37                 foreach (object obj in objs)
38                 {
39                     KeyValuePair<int, object> kv = dic.FirstOrDefault(m => m.Key == ix);
40                     Type tp = obj.GetType();
41                     if (tp.Name.Contains("Object[]"))
42                     {
43                         int ik = 0;
44                         object[] nobjs = (object[])obj;
45                         foreach (object nobj in nobjs)
46                         {
47                             sb.Append(string.Format("{0}[{1}]值为:{2}\r\n", kv.Value, ik, nobj));
48                             ik++;
49                         }
50                     }
51                     else
52                     {
53                         sb.Append(string.Format("{0}值为:{1}\r\n", kv.Value, obj));
54                     }
55                     ix++;
56                 }
57 
58             }

 

posted on 2017-04-26 21:05  ymworkroom  阅读(283)  评论(0编辑  收藏  举报