首页 > 代码库 > .net读取Lotus Domino文件数据库并写入DataTable中
.net读取Lotus Domino文件数据库并写入DataTable中
上一篇文章是简单的读取并输出,这里稍微加深一点,将读取到的内容按字段存入DataTable中。
1 StringBuilder sb = new StringBuilder(); 2 NotesSession ns = new NotesSession(); 3 //ns.Initialize("test1234"); 4 ns.Initialize(); 5 if (ns == null) 6 { 7 MessageBox.Show("未能初始化"); 8 return; 9 }10 //NotesDatabase db = ns.GetDatabase("", @"names.nsf", false);11 NotesDatabase db = ns.GetDatabase("", @"todo/120006.nsf", false);12 if (db == null)13 {14 MessageBox.Show("未能初始化数据库");15 return;16 }17 NotesView view = db.GetView(@"V5\01.待办文件");18 if (view == null) return;19 DataTable dt = new DataTable();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)29 {30 sb.Append(string.Format("{0};", obj));31 if (!dt.Columns.Contains(obj.ToString()))32 {33 DataColumn dc = new DataColumn(obj.ToString());34 dt.Columns.Add(dc);35 }36 37 }38 ix++;39 }40 }41 NotesDocument doc = view.GetFirstDocument();42 while (doc != null)43 {44 object[] objs = (object[])doc.ColumnValues;45 if (objs == null) return;46 int ix = 0;47 DataRow dr = dt.NewRow();48 foreach (object obj in objs)49 {50 if (obj == null) continue;51 KeyValuePair<int, object> kv = dic.FirstOrDefault(m => m.Key == ix);52 Type tp = obj.GetType();53 if (tp.Name.Contains("Object[]"))54 {55 object[] nobjs = (object[])obj;56 List<string> list = new List<string>();57 foreach (var nobj in nobjs)58 {59 sb.Append(string.Format("{0}\r\n", nobj));60 list.Add(string.Format("{0}",nobj));61 }62 dr[kv.Value.ToString()] = string.Join("|", list);63 }64 else65 {66 sb.Append(string.Format("{0}\r\n", obj));67 dr[kv.Value.ToString()] = obj;68 }69 ix++;70 }71 dt.Rows.Add(dr);72 doc = view.GetNextDocument(doc);73 }
.net读取Lotus Domino文件数据库并写入DataTable中
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。