简体   繁体   中英

Dapper.net SQL Syntax Error with DynamicParameters

I'm trying to build a dynamic sql query to update a table in SQL Server, like this:

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

I have a list of objects, it has lots of properties but to make example short, here I write only StokKodu and StokAdi. This code throws an error

Incorrect syntax at '='

I think this code should work with Dapper.

How can I make this code work, where is my mistake? Thanks for the help from now.

All i do is changing

string sqlSabit

to

StringBuilder sqlSabit

and instead of join strings with +=, i used sqlSabit.Append(), now code is working. And i tested with string, integer and float typed columns/parameters, no problem.

But couldn't understand why StringBuilder solves the problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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