提问者:小点点

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


我有以下代码:

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

“{cardid”此处有错误

它告诉我

无效的表达式术语“

有人能给我建议如何解决这个问题吗?


共2个答案

匿名用户

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

sql = "UPDATE Card SET cardColumn = @strValue​ WHERE CardGuid = @​cardId";
yourSqlCommand.Parameters.AddWithValue("@strValue​ ", cardColumn.Text);
yourSqlCommand.Parameters.AddWithValue("@​cardId", ​cardId);

虽然直接指定类型并使用value属性优于AddWithValue:

yourSqlCommand.Parameters.Add("@​cardId", SqlDbType.VarChar).Value = ​cardId;

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

匿名用户

再次输入线路时,问题被修复。一定有一些非ASCII字符在文本,因为它现在工作良好。