【发布时间】:2013-12-11 17:28:12
【问题描述】:
CF Whisperer 推荐了这个:
"避免使用 DataTables。它们是巨大的内存消耗者,在 CE 下你负担不起内存消耗。基本上它会将整个源表复制到 RAM 中。SqlCeDataReader 和 SqlCeResultSet 是你的朋友。"
...关于此代码:
var dt = new DataTable();
dt.Columns.Add(new DataColumn("Id", typeof(Int32)));
dt.Columns.Add(new DataColumn("DeptNumber", typeof(Int32)));
dt.Columns.Add(new DataColumn("DeptName", typeof(string)));
foreach (HHSUtils.Department dept in depts)
{
try
{
dt.Rows.Add(dept.Id, dept.DeptNumber, dept.DeptName);
countAdded++;
}
catch (Exception ex)
{
MessageBox.Show(string.Format("deptId == {0}, deptNumber == {1},
deptName == {2} ({3})", dept.Id, dept.DeptNumber, dept.DeptName, ex.Message));
}
}
// Now move it all into the table
using (var bc = new SqlCeBulkCopy(dataSource))
{
bc.DestinationTableName = "Departments";
bc.WriteToServer(dt);
}
我不明白如何在这里用 SqlCeDataReader 或 SqlCeResultSet 替换 DataTable。我上面的 DataTable 代码是 DDL 并且似乎(在我看来)不等同于 SqlCeDataReader 或 SqlCeResultSet,因为它们的目的是(据说?)用于处理查询数据...???
【问题讨论】:
标签: c# sql-server-ce compact-framework windows-ce