【发布时间】:2021-02-20 00:34:58
【问题描述】:
我有以下代码:
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
它告诉我
无效的表达式术语“
【问题讨论】:
-
您的 strvalue 必须用单引号括起来。编辑:答案不完整。如果列名指向数据库中的文本字段,则它必须在单引号之间。如果是数值,则不需要。
-
cardColumn.Text()的值是多少?另外,请注意SQL Injection。 -
我想指出,直接从某个输入字段添加文本的构造将存在安全风险。这种结构非常有可能进行 SQL 注入。
-
使用像实体框架这样的 ORM。使处理数据库中的数据变得更加容易。
-
还是要注意SQL注入的危险。如果有人输入“;delete * from tablename';”当程序有正确的权限时,表名中的所有行都将被删除。