Эта проблема меньше связана с 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-инъекции. Обычно вы хотите использовать parameterised SQL queries.
параметризируется версия запроса будет выглядеть следующим образом (подъемного пример со страницы, связанной с выше):
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();
Я уже попробовать оба ваши предложения, но все же ошибка: в этой строке появляется/ ошибка: cmdUpd.ExecuteNonQuery() ;. поэтому, когда я хочу исполнить ... – Clem
Хорошо, я попробовал все, бот все та же ошибка! : / – Clem