我對使用C#(Visual Studio 2010)的ADO.NET很陌生。使用LinqToSql不是一種選擇,因爲底層數據庫是Compact Edition 3.5(不幸)。)使用C#執行SQLCommand時出錯(
與我下面所顯示的代碼得到一個錯誤:「有一個錯誤解析查詢[令牌行號= 2,令牌行偏移= 38,令牌錯誤= AGENTNAME。」
誰能告訴我,我在做什麼錯了?
using (SqlCeConnection oConn = new SqlCeConnection(connectionstring))
{
string strSql = @"select
a.name as 'AgentName',
t.description as 'JobType',
s.description as 'Status',
count(j.statusid) as 'Count'
from
jobs as j
inner join agents as a on j.agentid = a.id
inner join statusdictionary as s on j.statusid = s.id
inner join jobtypedictionary as t on j.jobtypeid = t.id
where
convert(datetime,starttime,0) between @FirstDate and @LastDate
AND j.JobTypeID = @JobTypeID AND j.AgentID = @AgentID
group by
s.description,
t.description,
a.name order by a.name,
t.description";
SqlCeCommand oCmd = new SqlCeCommand(strSql, oConn);
SqlCeParameter fdparam = new SqlCeParameter();
fdparam.ParameterName = "@FirstDate";
fdparam.Value = firstdate;
oCmd.Parameters.Add(fdparam);
SqlCeParameter ldparam = new SqlCeParameter();
ldparam.ParameterName = "@LastDate";
ldparam.Value = lastdate ;
oCmd.Parameters.Add(ldparam);
SqlCeParameter JIDparam = new SqlCeParameter();
JIDparam.ParameterName = "@JobTypeID";
JIDparam.Value = jobtypeid;
oCmd.Parameters.Add(JIDparam);
SqlCeParameter AIDparam = new SqlCeParameter();
AIDparam.ParameterName = "@AgentID";
AIDparam.Value = jobtypeid;
oCmd.Parameters.Add(AIDparam);
oConn.Open();
SqlCeDataReader oReader = oCmd.ExecuteReader();
你嘗試不列別名來執行查詢或你嘗試改變別名「COL1」,「COL2」,......? –
Linq to SQL適用於SQL Server Compact 3.5(使用命令行中的sqlmetal.exe) – ErikEJ