Ошибка при выполнении SQLCommand с использованием C # - PullRequest
1 голос
/ 27 сентября 2011

Я довольно новичок в ADO.NET с использованием C # (Visual Studio 2010). Использование LinqToSql не вариант, потому что основной базой данных является Compact Edition 3.5 (к сожалению).

с кодом, показанным ниже, я получаю сообщение об ошибке: «Произошла ошибка при разборе запроса. [Номер строки токена = 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();

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

Я думаю, вам нужно потерять кавычки вокруг 'AgentName'.

1 голос
/ 27 сентября 2011

Заменить одинарные кавычки '' на скобки []

a.name как [AgentName],

...