gpt4 book ai didi

c# - 在 C# 中使用 DataSet 从动态查询中获取数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:47 25 4
gpt4 key购买 nike

我有几天的动态查询没有给我带来要在报告中显示的数据。我所做的是制作一个代码,帮助我使用从 Windows 窗体获得的参数构建动态查询。例如,这是我用来获取表格的代码部分之一:

DataTable result = new DataTable();
String sqlQuery = "SELECT";
String myTable = getInfoReport();
SqlCommand myCommand;

switch (myTable)
{
case "tbProducts":
sqlQuery += String.Format(" DateTime AS [{0}]", _DBFields.Date);
sqlQuery += String.Format(",ProductID AS [{0}]", _DBFields.MatNr);
sqlQuery += String.Format(",Material AS [{0}]", _DBFields.Material);
break;
case "tbErrors":
sqlQuery += String.Format(" DateTime AS [{0}]", _DBFields.Date);
sqlQuery += String.Format(",Message AS [{0}]", _DBFields.Message);
break;
}
sqlQuery += " FROM dbo." + myTable;
sqlQuery += " WHERE (DateTime between @StartDate and @EndDate)";
sqlQuery += " ORDER BY DateTime";

myCommand = new SqlCommand(sqlQuery);
myCommand.CommandType = CommandType.Text;

myCommand.Parameters.AddWithValue("@StartDate", myReportData.StartDate);
myCommand.Parameters.AddWithValue("@EndDate", myReportData.EndDate);

if (myTable.Equals("tbErrors")) { result = myErrorsAdapter.fillErrorsDataTable(myCommand); }
else { result = myProductsAdapter.fillProductsDataTable(myCommand); }

然后我的数据集类中有下一个代码:

partial class tbProductsTableAdapter
{
internal DataTable fillProductsDataTable(SqlCommand myCommand)
{
MyDataSet.tbProductsDataTable result = new MyDataSet.tbProductsDataTable();

try
{
this.Connection.Open();
myCommand.Connection = this.Connection;
this.Adapter.SelectCommand = myCommand;

result.Load(this.Adapter.SelectCommand.ExecuteReader());

this.Connection.Close();
}
catch (Exception e)
{
}

return result;
}
}

我的问题是,当我尝试将数据加载到我一开始声明的 DataTable 中时,适配器没有执行查询,也没有给我想要显示的数据。我对 C# 有点陌生,很长一段时间以来我一直在努力寻找解决方案,但我在尝试检查其他与我的问题类似的问题时遇到了困难。

在此先感谢您的帮助!

最佳答案

我发现发生了什么:它必须与我发送到查询的参数值有关。有时好有时不好,所以我必须留意它们。当我使用 tbProductsDataTable 类型时,我还发现了一些东西。我将其更改为简单的 DataTable 类型并且也能完美运行。所以第二个过程的代码是:

partial class tbProductsTableAdapter
{
internal DataTable fillProductsDataTable(SqlCommand myCommand)
{
DataTable result = new DataTable();

try
{
this.Connection.Open();
myCommand.Connection = this.Connection;
this.Adapter.SelectCommand = myCommand;

this.Adapter.fill(result);

this.Connection.Close();
}
catch (Exception e)
{
}

return result;
}
}

关于c# - 在 C# 中使用 DataSet 从动态查询中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733688/

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