Попытка построить строку Dynami c SQL в моем коде c#. Не знаю, где я ошибаюсь.
private void Save_Item_Drop_Data()
{
string uri = string.Empty;
string strUpdate = string.Empty;
WBGUpdateValue Update = new WBGUpdateValue();
Update.Email = Game_Data._User_Account.Email;
try
{
foreach (Base_Item item in Game_Data._Item_Drop)
{
//Recipe
if (item.Name.Contains("Recipe"))
{
if (Update_Recipe(item.Name))
{
uri = Game_Data._EndPoint + "api/WhiteboxGaming/Post_UnlockRecipe";
strUpdate = strUpdate + "UPDATE Skill_Gemology SET " + item.Name + "= 1 WHERE Email = ''" + Update.Email + "'' ";
_txtGameMessage.text = item.Name + " Unlocked";
}
}
//Rune
else if (item.Name.Contains("Rune") || item.Name == "Polished_Ancient_Stone" || item.Name == "Ancient_Stone")
{
uri = Game_Data._EndPoint + "api/WhiteboxGaming/Post_SaveItemdrop";
strUpdate = strUpdate + "UPDATE Inventory_Runes SET " + item.Name + "=" + item.Name + " + " + item.Count.ToString() + " WHERE Email = ''" + Update.Email + "'' ";
_txtGameMessage.text = "Found Rune";
}
Debug.Log(Update);
}
}
catch (Exception ex)
{
Debug.Log(ex);
}
if (Game_Data._Item_Drop.Count > 0)
{
Update.Value_1 = strUpdate;
StartCoroutine(booleanwebrequest(uri, Update));
}
Game_Data._Item_Drop = new List<Base_Item>();
}
Строка строит это:
UPDATE Inventory_Runes SET Polished_Ancient_Stone=Polished_Ancient_Stone + 1 WHERE Email = ''help.whiteboxgaming@gmail.com''
Когда я запускаю ее через SQL, я получаю ошибку:
Сообщение 911, уровень 16, состояние 4, строка 74
База данных 'UPDATE Inventory_Runes SET Polished_Ancient_Stone = Polished_Ancient_Stone + 1 WHERE Email =' help 'не существует. Убедитесь, что имя введено правильно.
Я понимаю, что оно говорит мне, но я не уверен, как исправить часть электронной почты в моем коде c#.
Обновление : теперь я действительно запутался. У меня есть правильный Dynami c SQL, но он все равно не работает.
Обновление :
//Rune
else if (item.Name.Contains("Rune") || item.Name == "Polished_Ancient_Stone" || item.Name == "Ancient_Stone")
{
uri = Game_Data._EndPoint + "api/WhiteboxGaming/Post_SaveItemdrop";
strUpdate = strUpdate + "UPDATE Inventory_Runes SET [" + item.Name + "] = [" + item.Name + "] + " + item.Count.ToString() + " WHERE Email = ''' + @Email + '''";
_txtGameMessage.text = "Found Rune";
}
Выходы:
'UPDATE Inventory_Runes SET [Polished_Ancient_Stone] = [Polished_Ancient_Stone] + 4 WHERE Email = ''' + @Email + '''UPDATE Inventory_Runes SET [Rune_sa] = [Rune_sa] + 1 WHERE Email = ''' + @Email + '''UPDATE Inventory_Runes SET [Polished_Ancient_Stone] = [Polished_Ancient_Stone] + 1 WHERE Email = ''' + @Email + '''UPDATE Inventory_Runes SET [Ancient_Stone] = [Ancient_Stone] + 2 WHERE Email = ''' + @Email + '''UPDATE Inventory_Runes SET [Ancient_Stone] = [Ancient_Stone] + 1 WHERE Email = ''' + @Email + ''''
Когда я разрываю его на части, это выглядит так:
UPDATE Inventory_Runes SET [Polished_Ancient_Stone] = [Polished_Ancient_Stone] + 4 WHERE Email = 'help.whiteboxgaming@gmail.com'
UPDATE Inventory_Runes SET [Rune_sa] = [Rune_sa] + 1 WHERE Email = 'help.whiteboxgaming@gmail.com'
UPDATE Inventory_Runes SET [Polished_Ancient_Stone] = [Polished_Ancient_Stone] + 1 WHERE Email = 'help.whiteboxgaming@gmail.com'
UPDATE Inventory_Runes SET [Ancient_Stone] = [Ancient_Stone] + 2 WHERE Email = 'help.whiteboxgaming@gmail.com'
UPDATE Inventory_Runes SET [Ancient_Stone] = [Ancient_Stone] + 1 WHERE Email = 'help.whiteboxgaming@gmail.com'