如何将TableDirect用于SQL Server CE?

时间:2013-12-06 17:37:50

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

我的代码适用于查询SQL Server CE表中的数据并使用它填充通用列表。可以看到here

但是有一条评论表明我应该用我的马车交换Leer Jet;所以,我正在尝试调整我找到here的代码,并且到目前为止这样做了:

public static List<HHSUtils.InventoryItem> SelectLocalInventoryItemsTableDirect()
{
    var invItems = new List<HHSUtils.InventoryItem>();
    using (var conn = new SqlCeConnection(dataSource))
    {
        conn.Open();
        SqlCeCommand cmd = conn.CreateCommand();
        cmd.CommandType = CommandType.TableDirect;
        cmd.CommandText = "InventoryItems";
        using (SqlCeResultSet rs cmd.ExecuteResultSet(ResultSetOptions.Scrollable))
        {
            cmd.Prepare();
            while (rs.Read())
            {
                var invItem = new HHSUtils.InventoryItem
                {
                    Id = Convert.ToString(rs["Id"]),
                    PackSize = Convert.ToInt16(rs["PackSize"]),
                    Description = Convert.ToString(rs["Description"]),
                    DeptDotSubdept = Convert.ToDouble(rs["DeptDotSubdept"]),
                    Unit_Cost = Convert.ToDouble(rs["UnitCost"]),
                    Unit_List = Convert.ToDouble(rs["UnitList"]),
                    UPC_code = Convert.ToString(rs["UPCCode"]),
                    UPC_pack_size = Convert.ToInt16(rs["UPCPackSize"]),
                    CRV_Id = Convert.ToInt32(rs["CRVId"])
                };
                invItems.Add(invItem);
            }
        }
    }
    return invItems;
}

...但是因为我只是循环遍历结果集来填充泛型列表,我想我不想要ResultSetOptions.Updatable(我之后需要不同的代码)。有以下几种可能性:

Insensitive
None
Scrollable
Sensitive
Updatable

...这对我的情况最好 - 可滚动?

更新

这似乎运行正常,而且速度很快,但我仍然不知道哪个ResultSetOptions属性是最优的...... This msdn article讨论了这个枚举,但并没有深入探讨它们何时应该/不被使用。

1 个答案:

答案 0 :(得分:1)

您希望在您的情况下使用Nonecmd.Prepare也是不必要的。如上所述in this question,GetValues也更快。