Подзапросы в этом контексте не допускаются. Допускаются только скалярные выражения
Привет
Может ли кто-нибудь помочь мне, пожалуйста, в моем приложении у меня есть метод ниже, чтобы обновить запись в базе данных, если она существует, а также вставить, если записи нет
public static int updateValue(int cellnum, int returnID, double? ценность)
{
int num = 0;
используя(sqlconnection для подключения = новое sqlconnection(clsGeneral.getConnectionString()))
{
использование(команда SqlCommand = соединение.CreateCommand())
{
строка str;
стр = "если не существует(выберите * от Валу, где ReturnID =" + returnID + " и CellID=(выберите CellID от [сотовый] где CellNum=" + cellnum + "))";
если (значение != 0.0)
{
сил += "вставить в Валу (CellID, ReturnID, Валу, TXT и FieldUsed, DteCreated, DteUpd) значения ((выберите CellID от[сотовый] где CellNum =" + cellnum + ")," + returnID + ", преобразовать(поплавок, заменить('" + значение + "',',','.')),",1,getdate(),то функцию getdate())";
str += " ELSE ";
str += строка.Функция concat(новый объект[] { "обновление [р] Набор [Р].[Значение]=заменить('", + стоимость , "',',','.'),[Валу].FieldUsed=1, где [Valu].ReturnID=", returnID " и [Valu].CellID=(выберите CellID из [Cell], где CellNum=", cellnum, ")" });
}
еще
{
сил += "вставить в Валу (CellID, ReturnID, Валу, TXT и FieldUsed, DteCreated, DteUpd) значения ((выберите CellID от[сотовый] где CellNum =" + cellnum + ")," + returnID + ", преобразовать(поплавок, заменить('" + значение + "',',','.')),",0,getdate(),то функцию getdate())";
str += " ELSE ";
str += строка.Функция concat(новый объект[] { "обновление [р] Набор [Р].[Значение]=конвертировать(поплавок, заменить('", +стоимость, "',',','.')),[Валу].FieldUsed=0, где [Valu].ReturnID=", returnID " и [Valu].CellID=(выберите CellID из [Cell], где CellNum=", cellnum, ")" });
}
команда.Свойство Commandtype = Значение Commandtype.Текст;
команда.Ул. свойства commandtext = ;
соединение.Открыть();
num = команда.Метод executenonquery();
}
}
возвратное число;
}
Я получаю нижеприведенную ошибку при сохранении, не могли бы вы помочь мне исправить ее горячим способом.
Подзапросы в этом контексте не допускаются. Допускаются только скалярные выражения
Что я уже пробовал:
public static int updateValue(int cellnum, int returnID, double? value) { int num = 0; using(SqlConnection connection = new SqlConnection(clsGeneral.getConnectionString())) { using(SqlCommand command = connection.CreateCommand()) { string str; str = "IF NOT EXISTS(SELECT * FROM Valu WHERE ReturnID = " + returnID + " AND CellID=(SELECT CellID FROM [Cell] WHERE CellNum=" + cellnum + "))"; if (value != 0.0) { str += " INSERT INTO Valu (CellID, ReturnID, Valu, Txt, FieldUsed, DteCreated, DteUpd) VALUES ((SELECT CellID FROM[Cell] WHERE CellNum = " + cellnum + ")," + returnID + ", CONVERT(FLOAT, REPLACE('" + value + "',',','.')),'',1,getdate(),getdate())"; str += " ELSE "; str += string.Concat(new object[] { "UPDATE [Valu] SET [Valu].[Valu]=REPLACE('", + value , "',',','.'),[Valu].FieldUsed=1 WHERE [Valu].ReturnID=", returnID, " AND [Valu].CellID=(SELECT CellID FROM [Cell] WHERE CellNum=", cellnum, ")" }); } else { str += " INSERT INTO Valu (CellID, ReturnID, Valu, Txt, FieldUsed, DteCreated, DteUpd) VALUES ((SELECT CellID FROM[Cell] WHERE CellNum = " + cellnum + ")," + returnID + ", CONVERT(FLOAT, REPLACE('" + value + "',',','.')),'',0,getdate(),getdate())"; str += " ELSE "; str += string.Concat(new object[] { "UPDATE [Valu] SET [Valu].[Valu]=CONVERT(FLOAT, REPLACE('", +value, "',',','.')),[Valu].FieldUsed=0 WHERE [Valu].ReturnID=", returnID, " AND [Valu].CellID=(SELECT CellID FROM [Cell] WHERE CellNum=", cellnum, ")" }); } command.CommandType = CommandType.Text; command.CommandText = str; connection.Open(); num = command.ExecuteNonQuery(); } } return num; }