从 DataTable 批量插入到 SQLCE DataSource

2023-11-30

这是一个使用 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");

您应该使用SqlCeResultSet 类

它允许在 SQL CE 数据库中批量导入我在 10 秒内导入了 100000 行 看着那(这example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 DataTable 批量插入到 SQLCE DataSource 的相关文章