2016-07-22 102 views
0

我想在現有的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

回答

1

我實際上沒有填充任何導致問題的數據集。我嚴重忽視了TableAdapter。我添加的代碼是:

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

DataTable loadTable = ta.GetData(); 

因此,沒有實例化一個TableAdapter和充滿數據的表格(基於TableAdapter的設置),你基本上得到與表,列和沒有價值的數據庫的一個空模式。菜鳥的錯誤。

2

請勿在過濾中使用方括號。

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

還要記住,您可以使用Visual Studio調試器來查看DataSets和Datatables的內容。

+0

我已經嘗試了使用和不使用括號的列名,結果相同。 – lutze

相關問題