Мой код должен просто обновить одну конкретную строку в таблице. Я использовал простую процедуру для обновления записи в текущем приложении, и она работает без каких-либо проблем, кроме этого случая. Каждый раз, когда выполняется запрос, он фактически вставляет новую строку вместо того, чтобы просто обновляя существующий:Оператор обновления вставляет новую строку вместо обновления
Так вот мой C# код:
try
{
command.Parameters.Clear();
command.Parameters.AddRange(vars);
command.CommandText = "Update" + tableName;
conn.Open();
command.ExecuteNonQuery();
conn.Close();
this.GetData(tableName);
}
catch
{
throw;
}
А вот мой SQL-код (пожалуйста Игнорировать регистр «Alter Процедура» заявление, я просто хотел, чтобы получить базовый сценарий процедуры):
ALTER procedure [dbo].[UpdateExpenditureItems]
(@ID int,
@Name nvarchar(50),
@IsGroup bit,
@Parent nvarchar(50),
@Description nvarchar(50)
)
AS
Begin
--a new inserted row seems to be a result of running IF statement rather than ELSE
if @Parent != null
begin
declare @ParentID int
set @ParentID = (select ID from ExpenditureItems where [email protected]);
UPDATE ExpenditureItems SET Name [email protected], Parent [email protected], [Description] [email protected], IsGroup = @IsGroup WHERE [email protected];
end
else
begin
UPDATE ExpenditureItems SET Name [email protected], [Description] [email protected] WHERE [email protected]
end
end
Я не могу отправить скриншот из-за предела репутации ... Спасибо заранее.
Да, я изменил это, но это не решает мою проблему. Все еще не работает ... –
Я сам запустил хранимую процедуру с сервера sql, и он работал хорошо. Таким образом, проблема связана с кодом C#. Но что это может быть, я понятия не имею. Во всех других подобных частях проекта он отлично работает ... –