13

在将应用程序从 SQL 2005 移植到 SQL Server Compact Edition 时,我发现需要移植以下命令:

SELECT TOP 1 Id FROM tblJob WHERE Holder_Id IS NULL

但 SQL Server Compact Edition 不支持该TOP关键字。如何移植此命令?

4

5 回答 5

30
SELECT TOP(1) Id 
FROM tblJob 
WHERE Holder_Id IS NULL

据我所知需要括号。

参考:http ://technet.microsoft.com/en-us/library/bb686896.aspx

补充:同样,仅适用于 3.5 及以上版本

于 2008-09-26T09:20:02.047 回答
2

这与您的问题略有正交。

SQL Server Compact Edition 实际上不能很好地处理 SQL 查询。通过直接打开表格,您可以获得更好的性能。在 .NET 中,您可以通过将命令对象的CommandText属性设置为表名并将CommandType属性设置为CommandType.TableDirect.

如果要过滤结果,则需要在要过滤的列上的表上建立索引。通过设置IndexName属性来指定要使用的索引,并使用SetRange来设置过滤器。

然后,您可以根据需要阅读尽可能多或尽可能少的记录。

于 2008-09-26T17:33:37.217 回答
1

我使用了 SqlCEDataAdapter 的 Fill 方法。你可以做:

DbDataAdapter.Fill (DataSet, Int32, Int32, String) 添加或刷新 DataSet 中指定范围内的行,以使用 DataSet 和 DataTable 名称匹配数据源中的行。由 .NET Compact Framework 提供支持。

http://msdn.microsoft.com/en-ie/library/system.data.common.dbdataadapter.fill(v=VS.80).aspx

于 2010-08-13T13:42:15.113 回答
0

看起来它不能在紧凑的情况下完成。您必须阅读所有作业,或者制作一个 SqlReader,然后只阅读第一个作业。

于 2008-09-26T09:18:43.830 回答
0

好找个理由。Management Studio 携带并使用它自己的版本 od SQL Server Compact。在http://en.wikipedia.org/wiki/SQL_Server_Compact中查看更多信息。

SQL Server Management Studio 2005 可以读取和修改 CE 3.0 和 3.1 数据库文件(使用最新的服务包),但读取 3.5 版文件需要来自 "Katmai" 2008 CTP 版本(或更高版本)的 SQL Server Management Studio 2008。

SQL Server Management Studio 2008 和 Microsoft Visual Studio Express 2008 SP1 的 RTM 可以创建、修改和查询 CE 3.5 SP1 数据库文件。

于 2008-10-20T16:07:44.750 回答