2017-02-11 22 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。此代碼拋出錯誤

語法不正確的「=」

我認爲此代碼應與小巧玲瓏的工作。

我該如何使這個代碼工作,我的錯誤在哪裏?感謝從現在起的幫助。

+1

@marc_s感謝編輯我的問題。 –

+0

UPTADE應該是更新(但你可能想通了) – richinator38

+0

@ richinator38是的,我注意到了。謝謝。 –

回答

0

我要做的就是改變

string sqlSabit 

StringBuilder sqlSabit 

,而是用+ =,我用sqlSabit.Append(連接字符串),現在代碼工作。我測試了字符串,整數和浮點型列/參數,沒有問題。

但無法理解爲什麼StringBuilder解決了這個問題。