AdoQueryConnection.BuildSqlFromXmlNodes(XPathNavigator) 方法

定义

返回从包含查询域值的指定 XML 节点分析的 SQL 命令文本片段。

public:
 abstract System::String ^ BuildSqlFromXmlNodes(System::Xml::XPath::XPathNavigator ^ input);
public abstract string BuildSqlFromXmlNodes (System.Xml.XPath.XPathNavigator input);
abstract member BuildSqlFromXmlNodes : System.Xml.XPath.XPathNavigator -> string
Public MustOverride Function BuildSqlFromXmlNodes (input As XPathNavigator) As String

参数

input
XPathNavigator

一个 XPathNavigator ,它位于 dfs:queryFields XML 节点,该节点包含要转换为 SQL 片段的查询字段值。

返回

基于指定节点中的查询域值构建的 WHERE 子句。

例外

出现以下情况之一:无法分析从输入节点生成的 SQL 命令字符串。输入节点不是查询字段值的表。输入节点包含 (要查询的数据源中不存在) XML 属性的列。

传递给此方法的参数是一个 null 引用, (Visual Basic) 中无任何内容。

传递给此方法的参数无效。 例如,它的类型或格式有误。

示例

在下面的示例中,Button 控件的事件处理程序使用 ADOQueryConnection 类的 BuildSQLFromXMLNodes 方法,分析当前的查询域值并将它们显示在消息框中。

该示例假定表单模板具有一个名为“Main connection”的数据连接,该连接指向 SQL Server 罗斯文示例数据库中的 Employees 表。

public void DisplaySQL_Clicked(object sender, ClickedEventArgs e)
{
   // Get the query fields node.
   string queryFieldsXPath = 
      "dfs:myFields/dfs:queryFields/q:Employees";
   XPathNavigator mainDataSourceNav = MainDataSource.CreateNavigator();
   XPathNavigator queryFieldsNav = mainDataSourceNav.SelectSingleNode(
      queryFieldsXPath, NamespaceManager);

   // Create AdoQueryConnection from the 
   // DataConnections collection.
   AdoQueryConnection myAdoQueryConnection = 
      (AdoQueryConnection)(DataConnections["Main connection"]);

   // Display BuildSQLFromXMLNodes output.
   string sqlFromXmlNodes = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav);
   MessageBox.Show(sqlFromXmlNodes);
}
Public Sub DisplaySQL_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   ' Get the query fields node.
   Dim queryFieldsXPath As String = 
      "dfs:myFields/dfs:queryFields/q:Employees"
   Dim mainDataSourceNav As XPathNavigator  = _
      MainDataSource.CreateNavigator()
   Dim queryFieldsNav As XPathNavigator = _
      mainDataSourceNav.SelectSingleNode( _
      queryFieldsXPath, NamespaceManager)

   ' Create AdoQueryConnection from the 
   ' DataConnections collection.
   Dim myAdoQueryConnection As AdoQueryConnection  = _
      DirectCast(DataConnections["Main connection"], _
      AdoQueryConnection)

   ' Display BuildSQLFromXMLNodes output.
   Dim sqlFromXmlNodes As String  = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav)
   MessageBox.Show(sqlFromXmlNodes)
End Sub

注解

BuildSQLFromXmlNodes 方法所生成的 SQL 片段是形式为 fieldname = value 对的 SQL WHERE 子句。 如果有多个对,则通过 AND 运算符组合每个对。 例如,如果用户通过在 Last NameFirst Name 域的查询域中输入 DavolioNancy 来查询罗斯文数据库的 Employees 表,则 BuildSQLFromXmlNode 方法返回的 SQL 片段将为:

("Employees"."LastName"='Davolio' AND "Employees"."FirstName"='Nancy')

input 参数指定的 XML 节点必须是窗体的 dfs:queryFields 节点的后代。 可以使用 属性将 SQL 命令文本片段添加到 ADOQueryConnection 对象的 Command 现有 SQL 命令字符串。

注意:若要确定包含要为 input 参数传递的查询字段值的表的 XPath 表达式,请显示“数据源”任务窗格,展开 queryFields 组,右键单击包含要使用的查询字段的表,然后单击“复制 XPath”。

此成员只能由与当前打开的表单在相同域中运行的表单访问,或者由已授予跨域权限的表单访问。

可以通过 Microsoft InfoPath Filler 或 Web 浏览器内打开的表单中运行的代码访问此类型或成员。

适用于