c# - C# Mysql 插入 blob
问题描述
我一直在尝试将字节值插入 Mysql。但没有成功。它插入数组的长度而不是项目属性。然后我需要帮助我如何将它从 blob 转换为可读格式
string itemsQuery = "INSERT INTO `player_items` (`player_id`, `item_id`, `count`, `attributes`) VALUES ";
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, ItemAttributes);
byte[] mStream = memoryStream.ToArray();
string newQuery = string.Format("{0} ({1},{2},{3},{4});", itemsQuery, 1, 1, 1, mStream);
ExecuteNonQuery(newQuery);
}
string nquery = "SELECT `attributes` FROM `player_items` WHERE " + 1;
using (MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(nquery))
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Deserialize(memoryStream);
}
public int ExecuteNonQuery(string commandText)
{
int affectedRows = 0;
using (var connection = mySqlConnection)
{
using (var command = new MySqlCommand(commandText, connection))
{
affectedRows = command.ExecuteNonQuery();
}
}
return affectedRows;
}
解决方案
我的建议是使用参数而不是字符串连接,让引擎为您进行序列化:
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
块,而不是重新使用现有块。
推荐阅读
- javascript - 在 ngFor 中切换鼠标输入/鼠标离开类
- javascript - 在每次 Git 推送时测试 JavaScript 代码(用于 Web 前端)的最简单方法
- javascript - MongoDB 按 (id1, id2) 或 (id2,id1) 分组
- php - Laravel(如何在一个 .blade 文件中从两个单独的表中提取两列)而不接触数据库?
- c# - 从 zip 文件中的大 txt 文件中读取文本
- python - 如何使用 Python Jupyter Notebook lmplot 格式化 y 轴以显示百分比?
- java - 如何在 Spring Boot 应用程序中从 graphQL 端点中的传入消息中读取请求标头
- excel-formula - 如何使 AVERAGEIFS 中的标准自动更新?
- angular - 如何发送将字节数组从 Angular 发送到 Web Api 的发布请求?
- python - 在同一个函数中访问子接口值