我试图了解异步使用数据库。为此,我用一个表创建了简单的MySQL数据库,然后可以通过以下方式从中获取信息:
public static void SyncRead(MySqlConnection ConnectionToDb, string TableName, string ColumnName)
{
string strOfCommandForSelect;
strOfCommandForSelect = string.Format ("SELECT {0} " +
"FROM {1} ",
ColumnName,
TableName);
ConnectionToDb.Open ();
try
{
using (MySqlCommand command = new MySqlCommand(strOfCommandForSelect, ConnectionToDb))
{
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if(!reader.IsDBNull(reader.GetOrdinal(ColumnName)))
{
Console.WriteLine(reader.GetString(ColumnName));
}
else
{
Console.WriteLine("Failure");
}
}
reader.Close ();
}
}
}
finally
{
ConnectionToDb.Close ();
}
}
对于异步查询,我使用下一个代码:
public static async Task AsyncRead(MySqlConnection Connection, string TableName, string ColumnName)
{
string strOfCommandForSelect = string.Format ("SELECT {0} " +
"FROM {1} ",
ColumnName,
TableName);
Connection.Open ();
using (MySqlCommand command = new MySqlCommand(strOfCommandForSelect, connection))
{
DbDataReader reader = await command.ExecuteReaderAsync ();
while (reader.Read())
{
string colVal=reader.GetFieldValue<string> (0);
Console.WriteLine (colVal);
}
}
await Connection.CloseAsync ();
}
同步方法通常会向我输出10行的数据列,但是GetFieldValue字符串的Async方法失败:“ reader.GetFieldValue(0)System.NotImplementedException:所请求的功能未实现。”。
有人可以向我解释如何使用ExecuteReaderAsync,并且可以告诉我代码中的其他错误吗?
最佳答案:
对于异步阅读器,请使用GetFieldValueAsync
而不是GetFieldValue
。
看来MySql驱动程序没有为其异步阅读器实现同步方法-但我不确定它对他们来说是唯一的。
例:
string colVal = await reader.GetFieldValueAsync<string>(0);
![weinxin](http://blog.tsingmac.com/wp-content/uploads/img/qr_300x300.jpg)
我的微信
一个码农、工程狮、集能量和智慧于一身的、DIY高手、小伙伴er很多的、80后奶爸。
赞助我为您提供更好的技术支持。
支付宝打赏
微信钱包打赏
赏