J'essaie de créer une requête SQL dynamique pour mettre à jour une table dans SQL Server, comme ceci:
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);
}
J'ai une liste d'objets, il a beaucoup de propriétés mais pour faire court, ici je n'écris que StokKodu et StokAdi. Ce code déclenche une erreur
Syntaxe incorrecte à '='
Je pense que ce code devrait fonctionner avec Dapper.
Comment puis-je faire fonctionner ce code, où est mon erreur? Merci pour l'aide à partir de maintenant.
Tout ce que je fais change
string sqlSabit
à
StringBuilder sqlSabit
et au lieu de joindre des chaînes avec + =, j'ai utilisé sqlSabit.Append (), maintenant le code fonctionne. Et j'ai testé avec des colonnes / paramètres typés string, integer et float, pas de problème.
Mais je ne pouvais pas comprendre pourquoi StringBuilder résout le problème.