![](/img/trans.png)
[英]How to have dynamic file name when using dataset.writexml vb.net
[英]trying to writeXml in VB.net
更新感謝vlam,我現在按照您的建議寫入Stream,我得到了一個XML文件,沒有更多錯誤,我的XML文件中只有這個文件,沒有數據,
<?xml version="1.0"?>
<RoboDataSet/>
為什么我沒有數據?
我在表單上有一個datagridview和一個數據集。 表單打開,我在前兩行中輸入數據,然后單擊添加到表單中的寫入XML按鈕。 按鈕和WriteXML的代碼在這里。 它創建一個文件,該文件為空。 但是,當它嘗試執行RoboDataSet.WriteXml(filename)命令時,出現錯誤。
當我在DataGridView中鍵入數據后,該數據是否此時保存在DataGridView和DataSet中?
我有一個消息框,顯示我們有數據,因此我相信輸入的數據在數據集中。 然后,執行代碼,然后看到在c:\\ data中創建的文件,然后在RoboDataSet.WriteXml(filename)命令中收到此錯誤;
所以有幾個問題,為什么我會得到使用的錯誤,嘗試寫入XML的過程是相同的,正確嗎?
我根據看到的MS示例嘗試了2種不同的方法,
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文件只有這個,沒有數據,
為什么我沒有數據?
應該寫入流而不是文件名。 也僅在數據集不為空時寫入。
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
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 Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.