更新谢谢Vlam,我现在按照您的建议写信,我会收到一个XML文件,而没有更多错误,我的XML文件只有此,没有数据,
<?xml version="1.0"?>
<RoboDataSet/>
为什么我没有数据?
我在表单上有一个datagridview和一个数据集。表单打开,我在前2行中键入数据,然后单击我添加到表单中的写XML按钮。按钮的代码和writexml在这里。它创建一个空的文件。但是,当它试图执行Robodataset.writexml(文件名)命令时,我会发现一个错误。
在DataGridView中键入数据后
我有一个消息框,显示我们的数据,所以我相信我输入的数据在数据集中。然后,我执行代码,然后看到在C: Data中创建的文件,然后在Robodataset.writexml(filename)命令上命令我获取此错误;
>所以几个问题,为什么我要使用错误,这是同一过程,试图写入xml,正确?
我尝试了两种不同的方法,根据我看到的MS示例,
Example 1
Dim stream As New System.IO.FileStream _
(filename, System.IO.FileMode.Create)
thisDataSet.WriteXml(stream)
Example 2
Dim filename As String = "XmlDoc.xml"
thisDataSet.WriteXml(filename)
这是我的代码不起作用;
Private Sub WriteXml_Click(sender As Object, e As EventArgs) Handles WriteXml.Click
WriteXmlToFile(RoboDataSet)
End Sub
Private Sub WriteXmlToFile(RoboDataSet As DataSet)
If RoboDataSet Is Nothing Then
MessageBox.Show("dataset empty")
Else
MessageBox.Show("We have data")
End If
Dim filename As String = "c:datawrite4.xml"
Dim Stream As New System.IO.FileStream _
(filename, System.IO.FileMode.Create)
RoboDataSet.WriteXml(filename)
End Sub
任何帮助都会很棒,谢谢
谢谢Vlam,我现在按照您的建议写作,我收到一个XML文件,没有更多错误,我的XML文件只有此,没有数据,
为什么我没有数据?
应该写入流,而不是文件名。还只有在数据集不是一无所有的情况下写。
Private Sub WriteXmlToFile(RoboDataSet As DataSet)
If RoboDataSet Is Nothing Then
MessageBox.Show("dataset empty")
Else
MessageBox.Show("We have data")
Dim filename As String = "c:datawrite4.xml"
Dim Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
RoboDataSet.WriteXml(Stream)
End If
End Sub
FileStream类实现Idisposable,因此需要关闭和处置。(避免泄漏未管理的资源,文件处理等)
即使存在错误,使用块也会处理这一点。
此答案与@vlam的答案相同,并添加了使用块。@Vlam是诊断出错误的人,所以请接受该答案,但请添加使用块。
Private Sub WriteXmlToFile(RoboDataSet As DataSet)
If RoboDataSet Is Nothing Then
MessageBox.Show("The DataSet does not exist.")
Return
End If
'**EDIT**
For Each t As DataTable In RoboDataSet.Tables
Debug.Print(t.Rows.Count.ToString)
Next
'**END EDIT**
Dim filename As String = "c:datawrite4.xml"
Using Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
RoboDataSet.WriteXml(Stream)
End Using
End Sub