首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在VB.net中使用writeXml

尝试在VB.net中使用writeXml
EN

Stack Overflow用户
提问于 2019-02-27 13:48:44
回答 2查看 965关注 0票数 0

更新感谢vlam,我现在正在按照你的建议写到流,我得到了一个XML文件,没有更多的错误,我的XML文件只有这个,没有数据,

代码语言:javascript
复制
<?xml version="1.0"?>
<RoboDataSet/>

为什么我没有数据?

我在一个窗体上有一个datagridview和一个数据集。表单打开,我在前两行键入数据,然后单击添加到表单中的write XML按钮。按钮和WriteXML的代码在这里。它创建一个空的文件。但是当它尝试执行RoboDataSet.WriteXml(文件名)命令时,我得到一个错误。

在DataGridView中输入数据后,数据会保存在DataGridView和DataSet中吗?

我有一个消息框,显示我们有数据,所以我相信我输入的数据在数据集中。然后我单步执行代码,我看到在c:\data中创建了一个文件,然后在RoboDataSet.WriteXml(文件名)命令中,我得到了这个错误;

所以有几个问题,为什么我会得到使用的错误,这是试图写入same的相同过程,对吗?

我尝试了两种不同的方法,基于我看到的MS示例,

代码语言:javascript
复制
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)

这是我的代码,它不能工作;

代码语言:javascript
复制
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文件只有这个,没有数据,

为什么我没有数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-27 13:52:27

应该写入流,而不是文件名。也仅当dataset不为nothing时才写入。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-02-27 14:53:32

FileStream类实现了IDisposable,因此需要关闭并释放它。(避免非托管资源、文件句柄等泄漏)

Using块将在出现错误的情况下处理此问题。

此答案与@Vlam的答案相同,但添加了Using块。@Vlam是诊断错误的人,因此请接受该答案,但一定要添加Using块。

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54898843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档