DataTable.Select()的简单测试没有得到任何结果

时间:2016-07-22 15:25:06

标签: c# visual-studio

我正在尝试从现有的Sql Server DB测试数据集上的不同查询。我需要能够为我正在进行的项目的id列抓取一行。然而,看似简单的查询似乎没有结果。

DataSet prodspdata = new prodspDataSet(); 

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

Console.WriteLine(load.Length);
Console.ReadLine();

load.Length的输出为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有关?

2 个答案:

答案 0 :(得分:2)

不要在过滤中使用方括号。

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

另请记住,您可以使用Visual Studio调试器查看DataSet和Datatables的内容。

答案 1 :(得分:1)

我实际上并没有用任何东西填充我的数据集,这导致了问题。我严重忽略了TableAdapter。我添加的代码是:

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

DataTable loadTable = ta.GetData();

因此,如果没有实例化TableAdapter并且表中填充了数据(基于TableAdapter的设置),您基本上会得到一个包含表,列和值的数据库的空模式。菜鸟错误。