将应用程序从SQL 2005移植到SQL Server Compact Edition时,我发现需要移植此命令:
SELECT TOP 1 Id FROM tblJob WHERE Holder_Id IS NULL
但SQL Server Compact Edition不支持TOP
关键字。我该如何移植此命令?
答案 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数据库 文件。