2017-02-11 7 views
0

Я пытаюсь создать динамический запрос SQL для обновления таблицы в SQL Server, например:Dapper.net SQL Ошибка синтаксиса с DynamicParameters

string alan = "SaticiKodu"; 

DynamicParameters paramStSabit = new DynamicParameters(); 
string sqlSabit = "UPTADE TBLSTSABIT SET "; 

if (alan == "SaticiKodu") 
{ 
    sqlSabit += " SATICI_KODU = @SaticiKodu ,"; 
    paramStSabit.Add("SaticiKodu", _msk.SaticiKodu);//_msk.SaticiKodu comes from List<T> in foreach loop 
} 

if (sqlSabit.Contains("=")) // here I check if I have any column update with '=' 
{ 
    sqlSabit += "WHERE STOK_KODU = @StokKodu"; 
    paramStSabit.Add("StokKodu", _msk.StokKodu); 
    sqlSabit= sqlSabit.Replace(",WHERE", " WHERE"); 
    db.Execute(sqlSabit, paramStSabit, transaction: _transaction, commandType: CommandType.Text); 
} 

У меня есть список объектов, она имеет множество свойства, но сделать пример коротким, здесь я пишу только StokKodu и StokAdi. Этот код выдает ошибку

Неправильный синтаксис при «=»

Я думаю, что этот код должен работать с Dapper.

Как я могу заставить этот код работать, где моя ошибка? Спасибо за помощь отныне.

+1

@marc_s спасибо за редактирование моего вопроса. –

+0

UPTADE должно быть ОБНОВЛЕНО (но вы, вероятно, поняли это) – richinator38

+0

@ richinator38 да, я заметил это. Благодарю. –

ответ

0

Все, что я сделать, это изменение

string sqlSabit 

в

StringBuilder sqlSabit 

и вместо того, чтобы присоединиться к струнам + =, я использовал sqlSabit.Append(), теперь код работает. И я тестировал с строками, целыми числами и параметрами с плавающей запятой, без проблем.

Но не мог понять, почему StringBuilder решает проблему.

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