1

当我构建我的 .xsd 时,我必须为每个表选择列,它为表创建了一个模式,对吗?那么,如何让 Select 字符串用作数据适配器新实例的基本 Select 命令,然后根据需要向其附加 Where 和 OrderBy 子句?

这将使我不必使每个 DataAdapter 的字段列表(对于同一个表)与 .xsd 文件中该表的架构保持同步。

有几个 DataAdapter 在某个表模式上工作但在 Where 和 OrderBy 子句中使用不同的参数不是很常见吗?当然,不必为六个 DataAdapter 维护(甚至冗余构建)Select 字符串的字段列表部分,这些 DataAdapter 都在同一个表模式下工作。

我正在设想这样的伪代码:

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)
4

1 回答 1

2

每个表都有一个默认查询(上面带有检查的那个)。当您将表拖入数据集以创建查询时,它会编写一条 SQL 语句,用于对您的表进行架构。保持该查询简单,您可能实际上不会在代码中使用它,并且您始终可以编辑该查询以更新表模式。

每次打开默认查询时,它都会连接到您的数据源,并允许您选择以前不存在的新列。如果要更新现有列,请在尝试打开查询之前从表中删除所有列。保存查询时,更新的列会重新添加。

确保您的连接字符串有权查看列信息。

您可以将多个查询添加到单个 TableAdapter。设计器中的 TableAdapter 显示为顶部的表架构,底部的查询。默认查询将控制哪些列可用于其他查询的输出。要添加其他查询,请右键单击 TableAdapter 并选择“Add->Query”,或者如果您选择 TableAdapter 的底部,您可以选择“Add Query...”。您创建的任何新 SQL 查询都将从默认查询中的 SQL 开始。您为每个新查询指定一个方法名称,您可以使用它来代替默认查询的“Fill”或“GetData”方法。假设每个新查询都会有一个与默认查询匹配的结果集,即使它们可以有不同的“where”子句参数。

简而言之

  • 每个表可能有一个 TableAdapter,只需添加多个查询。
  • 每个附加查询可以有不同的“Where”子句参数,只要它们都返回相同的列。
于 2010-05-08T18:35:33.633 回答