创建字符串表达式时出现意外标记?
Unexpected token when creating a string expression?
我有以下代码:
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
它告诉我
Invalid Expression term "
你需要知道这种字符串连接是可以避免的,它很容易受到 SQL 注入攻击,你应该始终使用 parameterized queries to avoid SQL Injection 并且也可以消除错误,比如这个:
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-already/
再次输入该行时问题已解决。文本中一定有一些 non-ascii 字符,因为它现在运行良好。
我有以下代码:
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
它告诉我
Invalid Expression term "
你需要知道这种字符串连接是可以避免的,它很容易受到 SQL 注入攻击,你应该始终使用 parameterized queries to avoid SQL Injection 并且也可以消除错误,比如这个:
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-already/
再次输入该行时问题已解决。文本中一定有一些 non-ascii 字符,因为它现在运行良好。