c# – 异步使用MySQL DB

Igor C/C++/C#评论1,722字数 1418阅读4分43秒阅读模式

C#异步读取MySQL数据库的问题解决。

我试图了解异步使用数据库。为此,我用一个表创建了简单的MySQL数据库,然后可以通过以下方式从中获取信息:

  1. public static void SyncRead(MySqlConnection ConnectionToDb, string TableName, string ColumnName)
  2. {
  3. string strOfCommandForSelect;
  4. strOfCommandForSelect = string.Format ("SELECT {0} " +
  5. "FROM {1} ",
  6. ColumnName,
  7. TableName);
  8. ConnectionToDb.Open ();
  9.  
  10. try
  11. {
  12. using (MySqlCommand command = new MySqlCommand(strOfCommandForSelect, ConnectionToDb))
  13. {
  14. using (MySqlDataReader reader = command.ExecuteReader())
  15. {
  16. while (reader.Read())
  17. {
  18. if(!reader.IsDBNull(reader.GetOrdinal(ColumnName)))
  19. {
  20. Console.WriteLine(reader.GetString(ColumnName));
  21. }
  22. else
  23. {
  24. Console.WriteLine("Failure");
  25. }
  26. }
  27. reader.Close ();
  28. }
  29. }
  30. }
  31. finally
  32. {
  33. ConnectionToDb.Close ();
  34. }
  35. }

对于异步查询,我使用下一个代码:

  1. public static async Task AsyncRead(MySqlConnection Connection, string TableName, string ColumnName)
  2. {
  3. string strOfCommandForSelect = string.Format ("SELECT {0} " +
  4. "FROM {1} ",
  5. ColumnName,
  6. TableName);
  7.  
  8. Connection.Open ();
  9.  
  10. using (MySqlCommand command = new MySqlCommand(strOfCommandForSelect, connection))
  11. {
  12. DbDataReader reader = await command.ExecuteReaderAsync ();
  13.  
  14. while (reader.Read())
  15. {
  16. string colVal=reader.GetFieldValue<string> (0);
  17. Console.WriteLine (colVal);
  18. }
  19. }
  20.  
  21. await Connection.CloseAsync ();
  22. }

同步方法通常会向我输出10行的数据列,但是GetFieldValue字符串的Async方法失败:“ reader.GetFieldValue(0)System.NotImplementedException:所请求的功能未实现。”。
有人可以向我解释如何使用ExecuteReaderAsync,并且可以告诉我代码中的其他错误吗?

最佳答案:

对于异步阅读器,请使用GetFieldValueAsync而不是GetFieldValue
看来MySql驱动程序没有为其异步阅读器实现同步方法-但我不确定它对他们来说是唯一的。
例:

  1. string colVal = await reader.GetFieldValueAsync<string>(0);

文章末尾固定信息

weinxin
我的微信
我的微信
一个码农、工程狮、集能量和智慧于一身的、DIY高手、小伙伴er很多的、80后奶爸。
 
Igor
  • 本文由 Igor 发表于 2023-01-0210:35:59
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证
加载中...