Если вы посмотрите на свой SQL:
"UPDATE acted SET '"+actcolumn+"' = '"+actnewvalue+"' WHERE '"+actoldvalue+"'"
Это будет выглядеть так:
UPDATE acted SET 'some_column' = 'some_value' WHERE 'some_condition'
Что, если в одинарных кавычках вы используете буквальные значения.'some_column' - это не столбец - это статическое значение, и в этом контексте оно бессмысленно и должно выдавать ошибку.
Что вы, вероятно, имели в виду, это:
UPDATE acted SET some_column = 'some_value' WHERE <some_condition>
Что вC # термины будут:
NpgsqlCommand command = new NpgsqlCommand("UPDATE acted SET "+actcolumn+" = '"+
actnewvalue+"' WHERE "+actoldvalue+"", connection);
Или, возможно, лучше записать как:
NpgsqlCommand command = new NpgsqlCommand(string.Format(
"UPDATE acted SET {0} = '{1}' WHERE {2}",
actcolumn, actnewvalue, actoldvalue), connection);
Или (немного размышляя здесь):
NpgsqlCommand command = new NpgsqlCommand(string.Format(
"UPDATE acted SET {0} = '{1}' WHERE {0} = '{2}'",
actcolumn, actnewvalue, actoldvalue), connection);
И еще лучше-писан для использования параметров.
Ознакомьтесь с этим постом, чтобы узнать, как немного пуленепробиваемым это:
https://stackoverflow.com/a/52449390/1278553