简单测试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?

+1

如果您显示prodspDataSet的代码,将会有所帮助 – Juan

+0

@Juan您是否指定了prodspDataSet.Designer.cs代码?有8400行。当我通过Project> Add New Data Source将它作为Visual Studio中的数据源添加时,它是自动生成的。 – lutze

+1

当您从调试器中探索数据集时是否有任何行? http://stackoverflow.com/questions/491555/how-can-i-easily-view-the-contents-of-a-datatable-or-dataview-in-the-immediate-w – Juan

我实际上没有填充任何导致问题的数据集。我严重忽视了TableAdapter。我添加的代码是:

prodspDataSetTableAdapters.TripNumberTableAdapter ta = new prodspDataSetTableAdapters.TripNumberTableAdapter(); 

DataTable loadTable = ta.GetData(); 

因此,没有实例化一个TableAdapter和充满数据的表格(基于TableAdapter的设置),你基本上得到与表,列和没有价值的数据库的一个空模式。菜鸟的错误。

请勿在过滤中使用方括号。

load = prodspdata.Tables["TripNumber"].Select("ctripnumber = '21605178'"); 

还要记住,您可以使用Visual Studio调试器来查看DataSets和Datatables的内容。

+0

我已经尝试了使用和不使用括号的列名,结果相同。 – lutze