2009-04-07 29 views
1

當我建立我的.xsd時,我不得不爲每個表選擇列,並且爲這些表創建了一個模式,對吧?那麼,如何才能讓Select字符串作爲基本Select命令用於數據適配器的新實例,然後根據需要向其添加Where和OrderBy子句?DataAdapter從基表模式中選擇字符串?

這將使我不必讓每個DataAdapter的字段列表(對於同一個表)與該表中的模式在.xsd文件中保持同步。

有幾個DataAdapter在某個表模式上工作,但在Where和OrderBy子句中使用不同的參數不常見嗎?當然,我們不需要維護(或者甚至是重複建立)半個數據適配器的選擇字符串的字段列表部分,這些數據適配器都是在同一個表模式下工作的。

我設想這樣的僞代碼:

BaseSelectString = MyTypedDataSet.JobsTable.GetSelectStringFromSchema() // Is there such a method or technique? 

WhereClause = " Where SomeField = @Param1 and SomeOtherField = @Param2" 
OrderByClause = " Order By Field1, Field2" 

SelectString=BaseSelectString + WhereClause + OrderByClause 

OleDbDataAdapter adapter = new OleDbDataAdapter(SelectString, MyConn) 

回答

2

每個表都有一個默認查詢(在頂部的一個與它的檢查)。當您將表格拖入數據集以創建查詢時,它會編寫一條SQL語句,用它來架構您的表格。保持簡單的查詢,您可能不會在代碼中實際使用它,並且始終可以編輯該查詢來更新表模式。

每次打開默認查詢,它都會連接到您的數據源,並允許您選擇之前沒有的新列。如果要更新現有列,請在嘗試打開查詢之前刪除表中的所有列。當您保存查詢時,您的更新列將被添加回來。

確保您的連接字符串有權查看列信息。

您可以將多個查詢添加到單個TableAdapter。設計器中的TableAdapter出現在頂部的表格模式中,並在底部查詢。默認查詢將控制哪些列可用於從其他查詢輸出。要添加額外的查詢,請右鍵單擊TableAdapter並選擇「添加 - >查詢」,或者如果您選擇了TableAdapter的底部,則可以選擇「添加查詢...」。您創建的任何新SQL查詢都將從默認查詢中的SQL開始。您爲每個新查詢提供一個方法名稱,您可以使用它來代替默認查詢的「填充」或「GetData」方法。假設每個新查詢都有一個匹配默認查詢的結果集,即使它們可以具有不同的「where」子句參數。

總之

  • 您可能必須爲每個表單的TableAdapter,只需添加多個查詢。
  • 每個附加查詢可以具有不同的「Where」子句參數,只要它們都返回相同的列。