创建字符串表达式时出现意外标记?

Ala*_*an2 0 .net c# sql ado.net

我有以下代码:

public void UpdateCardSetColumn(CARD cardColumn, bool value, string cardId)
{
    string strValue = value ? "1" : "0";

    sql = $"UPDATE Card SET {cardColumn.Text()} = {strValue}? WHERE CardGuid = '{?cardId}?'";

    RunExecute(db2, sql);
}
Run Code Online (Sandbox Code Playgroud)

这里有一个错误 '{cardId

它告诉我

无效的表达术语“

Sal*_*ari 5

您需要注意避免这种字符串连接并且它容易受到 SQL 注入攻击,您应该始终使用参数化查询来避免SQL 注入并消除错误,例如:

sql = "UPDATE Card SET cardColumn = @strValue? WHERE CardGuid = @?cardId";
yourSqlCommand.Parameters.AddWithValue("@strValue? ", cardColumn.Text);
yourSqlCommand.Parameters.AddWithValue("@?cardId", ?cardId);
Run Code Online (Sandbox Code Playgroud)

虽然直接指定类型并使用Value属性比AddWithValue

yourSqlCommand.Parameters.Add("@?cardId", SqlDbType.VarChar).Value = ?cardId;
Run Code Online (Sandbox Code Playgroud)

在此处阅读更多信息:https : //blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/