gpt4 book ai didi

c# - 返回所有行和列

转载 作者:行者123 更新时间:2023-12-01 00:28:51 25 4
gpt4 key购买 nike

我正在研究一个基本的 mysql 数据库类,它有几个函数。其中一个函数应返回所有行和列的列表。该代码正在运行,并且非常动态,但看起来还可以改进。我希望有人可以看一下这段代码并告诉我是否有其他解决方案?

我尝试过的其他解决方案之一是没有列表,但它涉及为它必须返回的每一行重新创建一个数组,所以我放弃了它并转向列表。

    public List<object[]> ReadAllRows(string sQuery)
{
List<object[]> oResults = new List<object[]>();

try
{
MySqlCommand msCommand = new MySqlCommand
{
CommandText = sQuery,
Connection = Connection
};

using (MySqlDataReader msReader = msCommand.ExecuteReader())
{
if(!msReader.HasRows)
return EmptyList;

while (msReader.Read())
{
object[] oRowValues = new object[msReader.FieldCount];
{
msReader.GetValues(oRowValues);
}

oResults.Add(new object[] { oRowValues });
}
}
}
catch (MySqlException ex)
{
LastError = "Error: " + ex;
return EmptyList;
}

return oResults;
}

如有任何问题,欢迎随时提问

最佳答案

我强烈建议不要这样做。

首先,您应该只在执行命令所需的时间内保持连接打开。此外,MySqlCommand 实现了 IDisposable,因此应将其包装在 using 子句中。

我反对它的一个原因是这个功能已经被涵盖了。一种简单的方法是让您的方法只返回一个 DataTable。 DataTables 将为您提供无论如何都需要的所有信息(数据类型、行、列等),而您的信息非常有限。

另一个原因与保持开放连接有关:坏主意。连接池将非常快速地处理打开/关闭连接,所以它只是没有必要。此外,如果您的应用程序崩溃,那么您将泄漏连接。在某些时候,您最终会遇到奇妙的小数据库错误。

关于c# - 返回所有行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098492/

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