简体   繁体   English

使用C#执行SQLCommand时出错

[英]Error when executing SQLCommand using C#

i'm pretty new to ADO.NET using C# (Visual Studio 2010). 我对使用C#(Visual Studio 2010)的ADO.NET相当陌生。 Using LinqToSql isn't an option because underlying database is a Compact Edition 3.5 (unfortunealty). 不能选择使用LinqToSql,因为基础数据库是Compact Edition 3.5(不幸)。

with the code displayed underneath I get an error: "There was an error parsing the query. [ Token line number = 2,Token line offset = 38,Token in error = AgentName ]" 带有显示在下面的代码,我得到一个错误:“解析查询时出错。[令牌行号= 2,令牌行偏移量= 38,令牌错误= AgentName]”

Can someone tell me what i'm doing wrong? 有人可以告诉我我在做什么错吗?

 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();

我认为您需要丢失“ AgentName”周围的引号。

Change single quotes '' to brackets [] 将单引号“”更改为方括号[]

a.name as [AgentName], a.name为[AgentName],

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM