Опять пытаемся создать запрос с именами столбцов from и, которые вы не можете использовать в качестве PARAMETER. Они должны быть исправлены в строке. НО ВНИМАНИЕ. НЕ ДОПУСКАЙТЕ, чтобы созданные вами детали таблицы / столбца / et c были получены из ненадежного источника, особенно из-за повреждения SQL -Injection.
Если ваша система контролирует происхождение И КВАЛИФИЦИРОВАНА, или иным образом внутренне контролирует передаваемое имя таблицы, И вы контролируете / уточняете передаваемое имя столбца, я бы изменил вашу функцию следующим образом:
public void setUpdate(List<string> code, string tableName)
{
SQLiteConnection con = new SQLiteConnection(connection);
SQLiteCommand UPDATE = new SQLiteCommand(
"UPDATE " + tableName + " set " + code[1] + " = @Value WHERE Key = @PK", con);
UPDATE.Parameters.AddWithValue("@Value", code[2]);
UPDATE.Parameters.AddWithValue("@PK", code[0]);
using (con)
{
con.Open();
UPDATE.ExecuteNonQuery();
con.Close();
}
}
Опять же, это при условии, что ВЫ контролируете и дезинфицируете происхождение параметра tableName и свой массив кода, второй элемент через [1], представляющий имя столбца. Значение настройки EQUAL TO и где клавиши EQUALS подходят для параметров. И если это не сработает, я бы начал с запроса, который, как вы знаете, является законным / понятным, просто для проверки функциональности с параметрами.
"UPDATE YourTable set YourColumn = @Value WHERE Key = @PK"