SQL Compact选择前1名

时间:2008-09-26 09:13:05

标签: sql-server sql-server-ce

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

SELECT TOP 1 Id FROM tblJob WHERE Holder_Id IS NULL

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

5 个答案:

答案 0 :(得分:30)

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

据我所知,需要括号。

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

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

答案 1 :(得分:2)

这与您的问题略有正交。

SQL Server Compact Edition实际上在SQL查询中表现不佳。通过直接打开表可以获得更好的性能。在.NET中,您可以通过将命令对象的CommandText属性设置为表名,将CommandType属性设置为CommandType.TableDirect来完成此操作。

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

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

答案 2 :(得分:1)

我使用过SqlCEDataAdapter的Fill方法。你可以这样做:

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

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

答案 3 :(得分:0)

看起来无法在紧凑型中完成。你必须阅读所有的工作,或者做一个SqlReader,然后阅读第一个。

答案 4 :(得分:0)

很好找到了理由。管理工作室携带并使用它自己的版本SQL Server Compact。请参阅http://en.wikipedia.org/wiki/SQL_Server_Compact

中的详情
  

SQL Server Management Studio 2005可以   阅读和修改CE 3.0和3.1   数据库文件(最新的   服务包),但SQL Server   管理工作室2008来自   “Katmai”2008年CTP发布(或更高版本)   需要阅读3.5版文件。

     

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