-1

私は .NET プログラミングと Visual Basic の初心者であり、それについてはよくわかりません。私は次のコードを持っています:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim cnn As New SqlConnection("Server=adserver;uid=sa;pwd=1234;dat abase=empatic")
        Dim da As New SqlDataAdapter("select * from producte for xml path('producte'),     root('Productes')", cnn)
        Dim ds As New DataSet        
        da.Fill(ds)

        DataGridView1.DataSource = ds.Tables(0)
        Dim a As String = ds.Tables(0).ToString

    End Sub
End Class

このコードが行うことは、SQL Server に接続してクエリを実行することです。このクエリは、GridViewer の単一の XML 行で生成されます。私の質問は次のとおりです。VB で情報を取得する方法を教えてください。

これらすべての最終的な目的は、VB が SQL Server に接続し、プログラムのボタンをクリックすると、クエリで生成した xml を表示することです。

4

2 に答える 2

1

XMLをナビゲート可能なツリー形式で表示するには、TreeViewコントロールを使用する必要があります。データソースを設定するには、XMLをTreeNodeのコレクションに組み込む必要もあります。XmlDocumentを作成し、変換関数を使用してTreeNodeを作成することにより、これを行う方法は次のとおりです。

SqlDataReaderを使用して、クエリから文字列変数への出力を選択すると、次のようにTreeViewにデータを入力できます。

Try
  Dim xsd As XmlDocument = New XmlDocument()
  xsd.LoadXml(myXmlString)
  ConvertXmlNodeToTreeNode(xsd.FirstChild, myTreeView.Nodes)
  myTreeView.Nodes(0).ExpandAll() 'expand the root
Catch ex As Exception
  Throw New Exception("Failed to create XmlDocument", ex)
End Try

変換機能:

Private Sub ConvertXmlNodeToTreeNode(ByVal xmlNode As XmlNode, ByVal treeNodes As TreeNodeCollection)
  Dim newTreeNode As TreeNode = treeNodes.Add(xmlNode.Name)

  Select Case xmlNode.NodeType
    Case XmlNodeType.ProcessingInstruction, XmlNodeType.XmlDeclaration
      newTreeNode.Text = "<?" + xmlNode.Name + " " +
      xmlNode.Value + "?>"
    Case XmlNodeType.Element
      newTreeNode.Text = "<" + xmlNode.Name + ">"
    Case XmlNodeType.Attribute
      newTreeNode.Text = "ATTRIBUTE: " + xmlNode.Name
    Case XmlNodeType.Text, XmlNodeType.CDATA
      newTreeNode.Text = xmlNode.Value
    Case XmlNodeType.Comment
      newTreeNode.Text = "<!--" + xmlNode.Value + "-->"
  End Select

  If Not IsNothing(xmlNode.Attributes) Then
    For Each attrib As XmlAttribute In xmlNode.Attributes
      ConvertXmlNodeToTreeNode(attrib, newTreeNode.Nodes)
    Next
  End If
  For Each childNode As XmlNode In xmlNode.ChildNodes
    ConvertXmlNodeToTreeNode(childNode, newTreeNode.Nodes)
  Next
End Sub
于 2013-01-18T21:34:03.947 に答える
0

データを XML として取得しますか? for xml path...そうでない場合は、 SQL ステートメントから を削除してください。たとえば、これを行うことができます:

Dim da As New SqlDataAdapter("select * from producte", cnn)

どうしても XML として使用したい場合は、XML を解析するために使用できるいくつかの異なるオプションがあります。最も一般的なオプションは次のとおりです。

于 2013-01-18T21:22:18.290 に答える