Это приложение C # WPF с SQL CE в качестве источника данных:
У меня есть DataTable (отображается как DataGrid) и источник данных SQL CE. Я заполняю свой DataTable из SQL CE с помощью DataAdapter, DataSet и DataTable. Затем привяжите мой DataGrid к DataTable.
Я могу добавлять строки (> 10 000) строк в свой DataTable и, возможно, отредактировать данные, прежде чем распространять все мои изменения вместе в мой источник данных Sql CE.
Мой текущий подход - это DROP TABLE, CREATE TABLE и повторная INSERT строки с помощью грубой силы до SQLCE. В SQL CE нет массовой вставки, и я не хочу использовать третью библиотеку или dll. Производительность медленная ...
Я ищу или более быстрый способ «массовой вставки» без необходимости отбрасывать, создавать и вставлять строки одну за другой.
Я что-то читал о SqlCeResultSet, но не могу найти никакой документации и задаюсь вопросом, имеет ли это какое-либо отношение к тому, что я пытаюсь сделать.
[РЕДАКТИРОВАТЬ]
После ответа и проверки этого:
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");
Это не сработало, но я не вижу никаких проблем в приведенном выше коде, поэтому надеюсь, что кто-то сможет указать на это ...
[РЕДАКТИРОВАТЬ - 2-й] [ОТВЕТ]
Наконец, я заставил код работать (хотя производительность сомнительна):
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");