我有以下代码:
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
”此处有错误
它告诉我
无效的表达式术语“
有人能给我建议如何解决这个问题吗?
您需要意识到,这种字符串连接是避免的,而且它容易受到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字符在文本,因为它现在工作良好。