如何从MySql表中检索blob数据并以Json格式返回?

mwg9r5ms  于 2023-02-03  发布在  Mysql
关注(0)|答案(1)|浏览(377)

我有一个三列的表

  1. MyDate : DateiIme
  2. MyBlob: blob
  3. Id: String

我想以Json的形式返回MyDate和MyBlob。表中可以有多条记录。

  1. public class MyData
  2. {
  3. public string? MyDate { get; set; };
  4. public string? MyBlob { get; set; };
  5. }
  6. public async Task<string> GetQueryResult(string Id)
  7. {
  8. MyData data = new MyData();
  9. List<MyData> MyList = new List<MyData>();
  10. string sqlSelect = string.Format("Select MyDate, MyBlob from MyTablee WHERE Id = '{0}'", Id);
  11. try
  12. {
  13. MySqlCommand sqlcmd = new MySqlCommand();
  14. MySqlConnection connetcion = new MySqlConnection(connectionString);
  15. sqlcmd.Connection = connetcion;
  16. sqlcmd.CommandTimeout = 0;
  17. sqlcmd.CommandType = CommandType.Text;
  18. sqlcmd.CommandText = sqlSelect;
  19. connetcion.Open();
  20. using (connetcion)
  21. {
  22. int count = 0;
  23. using (MySqlDataReader reader = sqlcmd.ExecuteReader())
  24. {
  25. while (reader.Read())
  26. {
  27. data.MyDate = reader.GetString(0);
  28. data.MyBlob = reader.GetString(1);
  29. MyList.Add(data);
  30. }
  31. }
  32. }
  33. }
  34. catch (Exception ex)
  35. {
  36. Console.WriteLine(ex.Message);
  37. }
  38. var json = JsonSerializer.Serialize(results);
  39. return json;
  40. }

Postman中的输出为:

  1. "{\"MyDate\":\"1/30/2023 9:16:40 PM\",\"MyBlob\":\"@MyBlob\"}"

我不确定blob数据到JSON的转换是否正确。谢谢。

egmofgnx

egmofgnx1#

您的表可能不包含任何BLOB数据,但在该列中包含文字字符串@MyBlob
出现这种情况的原因可能是使用了INSERT INTO MyTablee(MyDate, MyBlob) VALUES(NOW, '@MyBlob');这样的SQL语句,该语句插入了文本@MyBlob
确保插入代码的结构如下所示:

  1. using var command = connection.CreateCommand();
  2. command.CommandText = "INSERT INTO MyTablee(MyDate, MyBlob) VALUES(NOW(), @blob);";
  3. command.Parameters.AddWithValue("@blob", yourBlobDataHere);
  4. command.ExecuteNonQuery();

特别是,INSERT语句中的参数名没有引号,并且使用命令参数来发送值,而不是字符串连接。

相关问题