我有一个返回一组整数的存储过程。我需要帮助在 C# (VS 2005) Web 应用程序中填充这些结果的 ArrayList。
我意识到这可能是一个非常简单的过程,但显然我没有相关技能,也没有词汇来研究它。
我的假设是此数据表已正确填充:
public static DataTable GetAllVendors()
{
OleDbCommand cmd = Data.GetCommand(Configuration.DatabaseOwnerPrefix + ".GetAllInformationAndHelpVendorIds", Connections.MyDbConnection);
return Data.RunCommand(cmd).Tables[0];
}
我不知道如何将结果返回到 ArrayList 或其他可以使用 Contains() 方法计算的数据类型。
编辑:ArrayList 是一项较旧的技术,我会接受不使用它的建议。谢谢。
最佳答案
您应该做的是在该 cmd
对象上调用 ExecuteReader()
,如下所示:
public static IEnumerable<int> GetAllVendors()
{
using (var cmd = Data.GetCommand(Configuration.DatabaseOwnerPrefix + ".GetAllInformationAndHelpVendorIds", Connections.MyDbConnection))
{
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
yield return reader.GetInt32(0);
}
}
}
}
这假设 SQL 将返回一个表,其第一列(由 GetInt32()
方法的索引 0
标识)将是您要查找的 ID为了。如果 SQL 在另一列中返回 ID,只需将索引调整为您希望在其中找到它们的列。
此解决方案还要求命令的连接已经打开。如果不是,您可以在 cmd.ExecuteReader()
之前执行 cmd.Connection.Open()
。
关于c# - 从存储过程结果集中填充 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237282/