在Sql Server CE中插入数据的最佳方法

时间:2015-12-28 08:46:14

标签: c# sql-server-ce compact-framework sqlcedatareader

我一直在为我的产品开发 C#Compact Framework 4.0

我有一台服务器和一部手机,我必须将服务器上的所有数据同步到我的移动设备。

通常在一张桌子上将大约6000个条目插入我的移动设备。

现在我使用table direct和指定表的索引名称。

6000个参赛作品大约需要55秒。

是否有更快的插入方式?

SqlCeCommand cmdItem = conn.CreateCommand();
SqlCeResultSet rsItem;
cmdItem.CommandText = "item_info";
cmdItem.IndexName = "PK_item_info";
cmdItem.CommandType = CommandType.TableDirect;
rsItem = cmdItem.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable);
while(reader.read()){

    SqlCeUpdatableRecord recItem = rsItem.CreateRecord();
    recItem.SetString(1, cmdItem.SerialNo);
    recItem.SetInt32(10, 0);
    rsItem.Insert(recItem);  

}

2 个答案:

答案 0 :(得分:1)

删除" | ResultSetOptions.Scrollable"

移动线:

SqlCeUpdatableRecord recItem = rsItem.CreateRecord();

在while循环之上。

var cmdItem = conn.CreateCommand();
cmdItem.CommandText = "item_info";
cmdItem.CommandType = CommandType.TableDirect;
var rsItem = cmdItem.ExecuteResultSet(ResultSetOptions.Updatable);
var recItem = rsItem.CreateRecord();
while(reader.read())
{        
    recItem.SetString(1, cmdItem.SerialNo);
    recItem.SetInt32(10, 0);
    rsItem.Insert(recItem);
}

答案 1 :(得分:0)

使用此库,您可以将SqlBulkCopySQLBulkCopy Class (Microsoft website))与SQL Server CE数据库一起使用。

Library which supports SQL Server CE