【问题标题】:How can I use TableDirect for SQL Server CE?如何将 TableDirect 用于 SQL Server CE?
【发布时间】:2025-11-25 16:05:01
【问题描述】:

我有用于从 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 谈到了这个枚举,但并没有深入探讨什么时候应该/不应该使用。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      最近更新 更多