我正在尝试从现有的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有关?
答案 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的设置),您基本上会得到一个包含表,列和值的数据库的空模式。菜鸟错误。