gpt4 book ai didi

c# - 当结果为空时,MySqlDataAdapter.Fill 返回什么?

转载 作者:行者123 更新时间:2023-11-29 15:04:37 27 4
gpt4 key购买 nike

我有一个“worker”函数,它将处理我的程序中的所有 SQL 查询。我将需要执行返回结果集的查询以及仅执行没有任何结果的存储过程的查询。这可以通过 MySqlDataAdapter.Fill 实现吗?还是我需要使用 MySqlCommand.ExecuteNonQuery() 方法?这是我的“worker”函数供引用:

private DataSet RunQuery(string SQL)
{
MySqlConnection connection;
MySqlCommand command;
MySqlDataAdapter adapter;
DataSet dataset = new DataSet();

lock(locker)
{
connection = new MySqlConnection(MyConString);
command = new MySqlCommand();
command = connection.CreateCommand();
command.CommandText = SQL;
adapter = new MySqlDataAdapter(command);
adapter.Fill(dataset);
}

return dataset;
}

最佳答案

首先,您的工作函数会在 .Fill(dataset) 方法上引发异常。您需要使用 select 命令构建适配器,如下所示:

adapter = new MySqlDataAdapter(command);

针对填充运行非查询的结果将导致数据集不返回任何表。

但是:与使用 cmd.ExecuteNonQuery() 方法相比,使用 Adapter.Fill(dataset) 等 ADO.NET 命令执行非查询命令的效率非常低。

除了构建单独且冗余的 DataAdapter 对象之外,ADO.NET 中进行的每个调用都是虚拟的,并且需要由 CLR 在运行时解析为调用站点。在负载情况下,连续运行该方法会导致很大的GC压力,DataAdapter对象需要不断处理,并且会比仅仅运行command.ExecuteNonQuery();慢得多。

关于c# - 当结果为空时,MySqlDataAdapter.Fill 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428234/

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