【问题标题】:Writing xml with dataset to xml how to read it back将带有数据集的xml写入xml如何读回
【发布时间】:2017-06-22 05:46:08
【问题描述】:

我编写了一个简单的程序,将数据库中的数据集写入 xml 文件:

private void button1_Click(object sender, EventArgs e)
{
        {
            string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\temp\\names.mdb;Persist Security Info=False");

            using (OleDbConnection Conn = new OleDbConnection(ConnString))
            {
                string strSql = "Select * from Table1"; //only launch in main
                richTextBox1.Text = richTextBox1.Text + " Querying Launch Parameters";


                try
                {

                    OleDbConnection con = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\temp\\names.mdb; Persist Security Info = False");
                    OleDbCommand cmd = new OleDbCommand(strSql, con);
                    con.Open();
                    cmd.CommandType = CommandType.Text;
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "fname,sname");
                    // Extract data set to XML file 
                    ds.WriteXml(@"c:\\temp\\my.xml");

                }
                catch (Exception ex)
                {
                    richTextBox1.Text = richTextBox1.Text + "\n Error " + ex + "\n"; ;
                }

            }
        }
    }

为反向过程编写代码如何绘制空白数据集

private void button2_Click(object sender, EventArgs e)
    {
        string strSql = "insert into Tabel1";

        try
        {

            OleDbConnection con = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\temp\\Set.mdb; Persist Security Info = False");
            OleDbCommand cmd = new OleDbCommand(strSql, con);
            con.Open();
            cmd.CommandType = CommandType.Text;
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataSet ds = new DataSet();
            XmlReader xmlFile;
            xmlFile = XmlReader.Create("c:\\temp\\my.xml", new XmlReaderSettings());
            ds.ReadXml("c:\\temp\\my.xml");

            // while (ds.ReadXml("c:\\temp\\my.xml"));
            {
                ds.ReadXml("c:\\temp\\my.xml");
            }


            // dataGridView1.DataSource = ds;
            // dataGridView1.DataMember = "launch";
        }
        catch (Exception ex)
        {
            richTextBox1.Text = richTextBox1.Text + "\n Error " + ex + "\n";
        }
        finally
        {
            //fsReadXml.Close();
        }
    }

如何修复它以便我得到完整的数据集??

【问题讨论】:

  • 添加架构:ds.WriteXml(@"c:\\temp\\my.xml",XmlWriteMode.WriteSchema);
  • 如果你只使用DataSet ds = new DataSet(); ds.ReadXml("c:\\temp\\my.xml");会发生什么
  • @Damith 我所知道的只是在使用 dataGridView1.DataSource = ds; 行显示它时尽管显示了我的数据,但我的数据并不简单
  • @jdweng 仅将模式添加到文件中,它不会缝合以创建数据。有没有办法将两者结合起来??
  • 应该是:ds.SchemaSerializationMode = SchemaSerializationMode.IncludeSchema

标签: c# .net xml database dataset


【解决方案1】:

您可以使用以下代码读取 XML 文件:

  XmlReader xmlFile;
  xmlFile = XmlReader.Create("c:\\temp\\my.xml", new XmlReaderSettings());
  DataSet ds = new DataSet();
  ds.ReadXml(xmlFile);

【讨论】:

    【解决方案2】:

    试试:

    ds.WriteXml(@"c:\temp\my.xml", XmlWriteMode.WriteSchema);
    

    ds.ReadXml(@"c:\temp\my.xml", XmlReadMode.ReadSchema); 
    

    请注意,当您编写数据集时,您有 @ 和转义 \

    ds.WriteXml(@"c:\\temp\\my.xml");
    

    【讨论】:

      【解决方案3】:
      XmlDataDocument xmldoc = new XmlDataDocument();
      int i = 0;
      string str = null;
      FileStream fs = new FileStream("c:\\temp\\my.xml", FileMode.Open, FileAccess.Read);
      xmldoc.Load(fs);
      

      参考此链接http://csharp.net-informations.com/xml/how-to-read-xml.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多