Странная ошибка .net core 2 при попытке передать параметр в команду mysql

0
_context.Database.ExecuteSqlCommand($@"UPDATE table SET column = 
CONCAT(column,'?{string}') WHERE id = {id}");

string - строковая переменная, которая содержит значение, добавляемое в базу данных, но каким-то образом строка, добавленная в базу данных, является? @p0 вместо? value. Я использую pomelo mysql.

  • 1
    Здесь вы открываете себя для внедрения SQL-кода, гораздо безопаснее использовать параметры, например: _context.Database.ExecuteSqlCommand("UPDATE table SET column = CONCAT(column,'{0}') WHERE id = {1}", "stringParameter", intParameter);
  • 0
    @ DavidG Я думал, что метод, который я здесь использую, предотвращает внедрение SQL
Показать ещё 4 комментария
Теги:
entity-framework
asp.net-core-2.0

1 ответ

0

взгляните на библиотеку "Dapper", чтобы взаимодействовать с вашей БД. И тогда для кода вы можете это сделать:

using Dapper;

string sql = "UPDATE table SET column = CONCAT(column, @s) WHERE id = @id";
using (var connection = new SqlConnection(yourConnectionString))
{
        try
        {
            connection.Execute(sql, new { @id = yourid, s = string });
        }
        catch (SqlException e)
        {
            Debug.WriteLine(e);
        }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню