TableDirect可以用于任何查询,还是仅用于获取整个表(Select *)?

时间:2013-12-06 18:55:46

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

我在这里被告知[这是查询SQL Server CE表以获取记录,填充和返回自定义对象的正确方法吗?使用TableDirect进行我的SQL Server CE查询,所以我就像这样:

cmd.CommandType = CommandType.TableDirect;
cmd.CommandText = "InventoryItems";

...但现在我想知道TableDirect是否只能与CommandText一起用作表名,IOW a“Select * From”;是否可以这样做:

cmd.CommandType = CommandType.TableDirect;
cmd.CommandText = "Select this, that From InventoryItems where Whatever > 42";

1 个答案:

答案 0 :(得分:1)

TableDirect打开单个表(或索引),并且可以访问该表(或索引)中的所有列。您无法使用查询。

但是,你可以模仿许多类似查询的东西。例如,如果您想要WHERE MyField > 42,那么:

  1. 在MyField上创建升序索引(无论是否使用TableDirect,都应该有)
  2. 使用TableDirect打开索引(将索引名称传递给表名的Command instad)。
  3. 使用Seek寻找“MyField == 42”
  4. 之后的第一行
  5. 使用while (rs.Read())开始派对,因为每一行都符合您的标准(您跳过了所有不符合的标准)。
  6. 你会发现在很多情况下,通过手工编码这些类型的东西并且不使用查询解析器,可以更好地实现性能。我已经放弃了从>运行嵌入式设备的一些报告的时间。 5分钟到<通过创建查找表的缓存和使用table-direct 15秒。嵌入式设备上JOIN ==“crappy perf”。