当我构建我的.xsd时,我不得不为每个表选择列,并为表格制作了一个模式,对吧?那么如何才能将Select字符串用作新的dataadapter实例的基本Select命令,然后根据需要将Where和OrderBy子句附加到它?
这将使我不必保持每个DataAdapter的字段列表(对于同一个表)与.xsd文件中该表的架构同步。
有几个DataAdapter可以处理某个表模式,但在Where和OrderBy子句中使用不同的params是不常见的?当然,没有必要维护(甚至重新构建)六个DataAdapter的Select字符串的字段列表部分,它们都在同一个表模式中工作。
我想象的是这样的伪代码:
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)
答案 0 :(得分:2)
每个表都有一个默认查询(顶部有一个检查它)。当您将表拖入数据集以创建查询时,它会编写一个SQL语句,用于构建表。保持该查询简单,您可能实际上并未在代码中使用它,并且您始终可以编辑该查询以更新表模式。
每次打开默认查询时,它都会连接到您的数据源,并允许您选择之前不存在的新列。如果要更新现有列,请在尝试打开查询之前删除表中的所有列。保存查询后,您的更新列将被添加回来。
确保您的连接字符串具有查看列信息的权限。
您可以向单个TableAdapter添加多个查询。设计器中的TableAdapter显示为顶部的表架构,底部是查询。默认查询将控制哪些列可用于从其他查询输出。要添加其他查询,请右键单击TableAdapter并选择“添加 - >查询”,或者如果要选择TableAdapter的底部,则可以选择“添加查询...”。您创建的任何新SQL查询都将从默认查询中的SQL开始。您为每个新查询提供一个方法名称,您可以使用该名称而不是默认查询的“填充”或“GetData”方法。假设每个新查询都有一个与默认查询匹配的结果集,即使它们可以有不同的“where”子句参数。
简而言之