这是一个使用 SQL CE 作为数据源的 C# WPF 应用程序:
我有一个 DataTable(显示为 DataGrid)和一个 SQL CE DataSource。
我使用 DataAdapter、DataSet 和 DataTable 从 SQL CE 填充 DataTable。然后将我的 DataGrid 绑定到 DataTable。
我可以将行(>10,000)行添加到我的数据表中,并且可以在将所有更改一起传播到我的 Sql CE 数据源之前编辑数据。
我当前的方法是 DROP TABLE、CREATE TABLE 并通过强力将行重新插入到 SQLCE。 SQL CE 没有批量插入,并且我不想使用第三个库或 dll。性能很慢...
我正在寻找一种更快的“批量插入”方法,而不需要逐一删除、创建和插入行。
我读了一些有关 SqlCeResultSet 的内容,但找不到任何文档,想知道它与我想做的事情有什么关系。
[EDIT]
按照答案并检查这一点:
http://ruudvanderlinden.com/2010/10/13/bulk-insert-into-sql-ce-in-c/
我尝试使用该功能,但似乎不起作用。
下面是我的代码。 Footable 是我的数据库表,我有两列 - “id”和“FooName”。
Hashtable idHash = new Hashtable();
Hashtable fooNameHash = new Hashtable();
foreach(DataRow row in dt.Rows)
{
idHash.Add("id",row["id"]);
fooNameHash.Add("FooName",row["FooName"]);
}
List<Hashtable> colHashList = new List<Hashtable>();
colHashList.Add(idHash);
colHashList.Add(fooNameHash);
BulkInsertDatabase(colHashList, "FooTable");
它不起作用,但我在上面的代码中没有看到任何问题,所以希望有人能指出。
[编辑 - 第二次][答案]
最后我让代码可以工作(尽管性能值得怀疑):
List<Hashtable> colHashList = new List<Hashtable>();
Hashtable[] idHash = new Hashtable[dt.Rows.Count];
Hashtable[] fooNameHash = new Hashtable[dt.Rows.Count];
int i=0;
foreach(DataRow row in dt.Rows)
{
idHash[i] = new Hashtable();
idHash[i].Add("id", row["id"]);
colHashList.Add(idHash[i]);
fooNameHash[i] = new Hashtable();
fooNameHash[i].Add("FooName", row["FooName"]);
colHashList.Add(fooNameHash[i]);
i++;
}
BulkInsertDatabase(colHashList, "FooTable");