【发布时间】:2015-01-13 07:29:44
【问题描述】:
我试图了解异步与 DB 一起工作。为此,我用一个表创建了简单的 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 ();
}
Sync 方法通常会输出我的 10 行数据列,但 GetFieldValue 字符串处的 Async 方法失败:“reader.GetFieldValue (0) System.NotImplementedException: The requested feature is not implemented.”。 谁能向我解释一下,如何使用 ExecuteReaderAsync 并可能告诉我我的代码中的其他一些错误?
【问题讨论】:
-
看起来 MySql 连接器没有实现该功能...这就是您收到错误的原因
-
我怎样才能异步使用 MySQL DB?
标签: c# mysql asynchronous mono gtk#