我试着在sql compact edition中一个月内从表中获取记录。 这是我知道的SQL查询:
DECLARE @startDate as DATETIME, @EndDate as DATETIME
@startDate = GetDate();
@ENdDate = DATEADD(m,1,@startDate)
select * from table where (columnname between @startdate and @enddate)
我知道你必须一次发送一个脚本,但是如何在sql ce中声明变量(我猜它不接受声明)?
答案 0 :(得分:1)
对于这个问题,我的回答很晚,但是希望对某人有用。
您不能在SQL CE中声明某些变量,因为每个命令只能使用一个语句。就像ErikEJ在{{3}}中所说的那样。
如果可能,您需要将脚本重构为一个重要的语句!
我将很高兴听到更好的解决方案。
答案 1 :(得分:0)
我不熟悉SQL-CE,但我认为你缺少一些Set
语句。 试试这个:
<击> 撞击>
<击>DECLARE @startDate as DATETIME, @EndDate as DATETIME
Set @startDate = GetDate();
Set @ENdDate = DATEADD(m,1,@startDate)
select * from table where (columnname between @startdate and @enddate)
击> <击> 撞击>
<强>更新强> 请参阅MSDN中的SQL CE参考中的Using Parameters in Queries。你是正确的,因为Declare不是一个有效的关键字,所以你需要从应用程序本身作为参数化版本的查询。
select * from table where (columnname between ? and ?)
答案 2 :(得分:0)
查看帖子How do I populate a SQL Server Compact database? 并查看那里引用的工具是否可以帮助您。
答案 3 :(得分:0)
如果您通过应用程序调用它(我不确定您如何读取数据)
准备您的查询:
select * from table where (columnname between ? and ?)
但我不确定你是否可以使用between关键字。可能你需要改变它。
然后你需要像这样添加你的SqlCeParameter对象:
cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.DateTime, myDate));