简单测试DataTable.Select()没有得到任何结果,当它应该
我想在现有的Sql Server数据库的数据集上测试不同的查询。我需要能够通过它的id列获取我正在执行的项目的一行。看起来像一个简单的查询没有结果。从load.Length
简单测试DataTable.Select()没有得到任何结果,当它应该
DataSet prodspdata = new prodspDataSet();
DataRow[] load;
load = prodspdata.Tables["TripNumber"].Select("[ctripnumber] = '21605178'");
Console.WriteLine(load.Length);
Console.ReadLine();
输出为0。我从文档明白,负载应该从Select()
查询返回的行的阵列。我知道,这个结果从看在数据存在,所以我希望load.length
为1
我测试了从SQL Server Management Studio中的查询,以确保我是不是失去了一些东西:
SELECT * FROM TripNumber WHERE ctripnumber = '21605178'
如预期的那样返回1行。
我的Select查询不好吗?我是C#的新手,我测试它错了吗?我只需要知道load
是否包含任何结果,因此我知道我的查询按预期工作。
编辑:所以它出现我的DataTable没有行。
DataTable loadTable;
loadTable = prodspdata.Tables["TripNumber"];
Console.WriteLine(loadTable.Rows.Count);
Console.ReadLine();
这将返回0
行而loadTable.Columns.Count
给我133
我错过了一步,也许是与一个TableAdapter?
我实际上没有填充任何导致问题的数据集。我严重忽视了TableAdapter。我添加的代码是:
prodspDataSetTableAdapters.TripNumberTableAdapter ta = new prodspDataSetTableAdapters.TripNumberTableAdapter();
DataTable loadTable = ta.GetData();
因此,没有实例化一个TableAdapter和充满数据的表格(基于TableAdapter的设置),你基本上得到与表,列和没有价值的数据库的一个空模式。菜鸟的错误。
请勿在过滤中使用方括号。
load = prodspdata.Tables["TripNumber"].Select("ctripnumber = '21605178'");
还要记住,您可以使用Visual Studio调试器来查看DataSets和Datatables的内容。
我已经尝试了使用和不使用括号的列名,结果相同。 – lutze
如果您显示prodspDataSet的代码,将会有所帮助 – Juan
@Juan您是否指定了prodspDataSet.Designer.cs代码?有8400行。当我通过Project> Add New Data Source将它作为Visual Studio中的数据源添加时,它是自动生成的。 – lutze
当您从调试器中探索数据集时是否有任何行? http://stackoverflow.com/questions/491555/how-can-i-easily-view-the-contents-of-a-datatable-or-dataview-in-the-immediate-w – Juan