2013-03-28 4 views
0

Я пытаюсь выполнить следующий запрос через мой .net-код, но он дает мне ошибку, ошибку около« .but, когда я выполняю этот запрос на Sql Server, он работает правильно.Ошибка около «.net.

select 
    s.CurrentDate, 
    s.game_id, 
    s.Searchstring, 
    sm.type_of_game, 
    case 
     when(count(ISNULL(t.game_id, 0))>0) then 'Y' else 'N' 
    end as scorestatus, 
    case 
     when(count(isnull(i.game_id,0))>0) then 'Y' else 'N' 
    end as scorestatusindividual, 
    sm.image_path, 
    g.datetime, 
    '' as score_keeper 
from 
    dbo.Search s with(nolock) 
    left outer join dbo.TeamGameResult t with(nolock) 
     on s.game_id=t.game_id 
    left outer join dbo.IndividualGameResult i with(nolock) 
     on i.game_id=s.game_id 
    join dbo.Game g with(nolock) 
     on g.game_id=s.game_id 
    join dbo.AdditionalDetails ad 
     on ad.AdditionalDetails_id=g.AdditionalDetails_id 
    join dbo.SportMaster sm with(nolock) 
     on sm.SportsMaster_id=ad.SportsMaster_id 
where 
    (
     ( 
      Searchstring+' '+ convert(nvarchar(10),s.CurrentDate,101) Like '%01/15/2013%' 
      and Searchstring+' '+ convert(nvarchar(10),s.CurrentDate,101) Like '%Soccer%' 
     ) 
    ) 
    and convert(varchar(10),g.datetime,101) in ('01/15/2013','01/14/2013') 
group by 
    s.game_id, 
    s.Searchstring, 
    sm.type_of_game, 
    s.CurrentDate, 
    sm.image_path, 
    g.datetime 
order by 
    g.datetime desc 

код .net здесь я создал строку и передать его fetchsearchrecordsbydate() метод. введите код здесь

for (int i = 0; i < strSearchstring.Length; i++) { 

    if (i == strSearchstring.Length - 1) { 

     Searchstring = strcondition + " Searchstring+'' ''+  convert(nvarchar(10),s.CurrentDate,101) Like ''%" + strSearchstring[i].ToString() + "%'')"; 
    } else { 
     Searchstring = strcondition + " Searchstring+'' ''+ convert(nvarchar(10),s.CurrentDate,101) Like ''%" + strSearchstring[i].ToString() + "%'' and";     
    } 

public static DataTable fetchsearchrecordsbydate(string strSearchString, string strUserid, string strdate) { 

    try { 
     Database db = DatabaseFactory.CreateDatabase(); 
     DbCommand dbcmd = db.GetStoredProcCommand("spFetchRecordsFromdate"); 
     db.AddInParameter(dbcmd, "Searchstring", DbType.String, strSearchString); 
     db.AddInParameter(dbcmd, "userid", DbType.Int32,Convert.ToInt32(strUserid)); 
     db.AddInParameter(dbcmd,"date",DbType.DateTime,Convert.ToDateTime(strdate)); 
     DataSet dsSearchResult = db.ExecuteDataSet(dbcmd); 
     return dsSearchResult.Tables[0]; 

    } catch (Exception ex) { 
     throw ex; 
    } 
} 

Searchstring=((Searchstring+' '+ convert(nvarchar(10),s.CurrentDate,101) Like '%01/15/2013%' and Searchstring+' '+ convert(nvarchar(10),s.CurrentDate,101) Like '%Soccer%')) 

это моя genrated строка. , но это дает мне ошибку, ошибка около ".it работает правильно в sql, но дает ошибку в .net

+2

Покажите нам код в C# –

+0

Как вы его используете в .net-коде? – Dima

+0

База данных db = DatabaseFactory.CreateDatabase(); DbCommand dbcmd = db.GetStoredProcCommand ("spFetchRecordsFromTable"); db.AddInParameter (dbcmd, «Searchstring», DbType.String, strSearchString); db.AddInParameter (dbcmd, "userid", DbType.Int32, Convert.ToInt32 (strUserid)); db.AddInParameter (dbcmd, "date", DbType.DateTime, Convert.ToDateTime (strdate)); DataSet dsSearchResult = db.ExecuteDataSet (dbcmd); – Trupti

ответ

1

По какой-то неизвестной причине вы удваиваете свои персонажи одной кавычки внутри своей строчной строчки C# (места, такие как '' '') .

Хотя это было бы необходимо, если вы создаете строки в SQL (потому что в SQL, струнные разделители '), он не нужен в C# Просто сделайте, например:.

Searchstring = strcondition + " Searchstring+' '+  convert(nvarchar(10),s.CurrentDate,101) Like '%" + strSearchstring[i].ToString() + "%')"; 

Кроме того, общий способ избежать необходимости работать, если добавление первого (или последнего) динамического условного условия всегда включает условие 1=1, которое вы добавляете первым/последним, вне цикла, который применяет другие условия.

Смежные вопросы