Я предлагаю использовать параметры вместо конкатенации строк и позволить движку выполнить сериализацию за вас:
string itemsQuery = "INSERT INTO `player_items` (`player_id`, `item_id`, `count`, `attributes`) VALUES (@player_id, @item_id, @count, @attributes)";
MySqlParameter[] parameters = {
new MySqlParameter("player_id",1),
new MySqlParameter("item_id",1),
new MySqlParameter("count",1),
new MySqlParameter("attributes",MySqlDbType.Blob)
};
parameters[3].Value = ItemAttributes;
ExecuteNonQuery(itemsQuery, parameters);
public int ExecuteNonQuery(string commandText, params MySqlParameter[] parameters)
{
int affectedRows = 0;
using (var connection = mySqlConnection)
{
using (var command = new MySqlCommand(commandText, connection))
{
command.Parameters.AddRange(parameters);
affectedRows = command.ExecuteNonQuery();
}
}
return affectedRows;
}
Я также заметил, что вы, кажется, повторно используете mySqlConnection
, что является плохой идеей , Соединения объединяются. NET, поэтому их создание относительно дешево. Лучше всего создать новый MySqlConnection
в блоке using
, а не повторно использовать существующий.