更新感谢vlam,我现在正在按照你的建议写到流,我得到了一个XML文件,没有更多的错误,我的XML文件只有这个,没有数据,
<?xml version="1.0"?>
<RoboDataSet/>为什么我没有数据?
我在一个窗体上有一个datagridview和一个数据集。表单打开,我在前两行键入数据,然后单击添加到表单中的write XML按钮。按钮和WriteXML的代码在这里。它创建一个空的文件。但是当它尝试执行RoboDataSet.WriteXml(文件名)命令时,我得到一个错误。
在DataGridView中输入数据后,数据会保存在DataGridView和DataSet中吗?
我有一个消息框,显示我们有数据,所以我相信我输入的数据在数据集中。然后我单步执行代码,我看到在c:\data中创建了一个文件,然后在RoboDataSet.WriteXml(文件名)命令中,我得到了这个错误;
所以有几个问题,为什么我会得到使用的错误,这是试图写入same的相同过程,对吗?
我尝试了两种不同的方法,基于我看到的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:\data\write4.xml"
Dim Stream As New System.IO.FileStream _
(filename, System.IO.FileMode.Create)
RoboDataSet.WriteXml(filename)
End Sub任何帮助都会很好,谢谢
谢谢vlam,我现在正在按照你的建议写到Stream,我得到了一个XML文件,没有更多的错误,我的XML文件只有这个,没有数据,
为什么我没有数据?
发布于 2019-02-27 13:52:27
应该写入流,而不是文件名。也仅当dataset不为nothing时才写入。
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:\data\write4.xml"
Dim Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
RoboDataSet.WriteXml(Stream)
End If
End Sub发布于 2019-02-27 14:53:32
FileStream类实现了IDisposable,因此需要关闭并释放它。(避免非托管资源、文件句柄等泄漏)
Using块将在出现错误的情况下处理此问题。
此答案与@Vlam的答案相同,但添加了Using块。@Vlam是诊断错误的人,因此请接受该答案,但一定要添加Using块。
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:\data\write4.xml"
Using Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
RoboDataSet.WriteXml(Stream)
End Using
End Subhttps://stackoverflow.com/questions/54898843
复制相似问题