这个问题与 SQL 关系不大,而与在 C# 中使用字符串和变量有关。
为了在 C# 中的字符串中插入变量的值,不能只将变量的名称放在字符串中。字符串不“知道”它包含一个变量。以下是一些可行的方法:
double totalPrice = 1.1;
// string concatenation
string sqlUpd =
"UPDATE Racun SET Znesek_nakupa='" +
totalPrice +
"' WHERE Id_racun= (SELECT MAX(Id_racun) FROM Racun)";
// with string.Format
string sqlUpd = string.Format(
"UPDATE Racun SET Znesek_nakupa='{0}' WHERE Id_racun= (SELECT MAX(Id_racun) FROM Racun)",
totalPrice);
然而,像这样在 SQL 查询中嵌入变量值的方法并不被认为是最佳实践,因为它存在 SQL 注入攻击的风险。通常你会想要使用参数化的 SQL 查询。
您的查询的参数化版本如下所示(从上面链接的页面中提取示例):
SqlConnection conn = new SqlConnection(_connectionString);
conn.Open();
string s = "UPDATE Racun SET Znesek_nakupa='@totalPrice' WHERE Id_racun= (SELECT MAX(Id_racun) FROM Racun";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@totalPrice", totalPrice);
SqlDataReader reader = cmd.ExecuteReader();