gpt4 book ai didi

c# - 异步使用 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-30 22:54:38 25 4
gpt4 key购买 nike

我试图理解使用数据库的异步操作。为此,我用一个表创建了简单的 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 字符串处失败:“reader.GetFieldValue (0) System.NotImplementedException: 请求的功能未实现。”。任何人都可以向我解释如何使用 ExecuteReaderAsync 并告诉我我的代码中的其他一些错误吗?

最佳答案

对于异步读取器,请使用 GetFieldValueAsync 而不是 GetFieldValue。似乎 MySql 驱动程序没有为其异步读取器实现同步方法 - 但我不确定它是否对它们来说是独一无二的。

例子:

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

关于c# - 异步使用 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com