none
没了这个程序,后果很严重。希望高手们帮忙下~~ RRS feed

  • 问题

  • 小弟正在研究XML的异构数据的交换。具体内容如下。

    (1)比如说从SQL 2000读取数据select customerid,companyname,contactname from customers.
    把从数据库中的数据转换为XML(是不是还可以写XSD文档,用来约束XML)

    (2)把写出来的XML导入ACCESS或EXCEL中。同时受到之前的那个XSD的约束。

    这个程序对于高手们应该很简单,但对于我。。。

    谁能帮忙写这个程序下,真的是快要跳墙了。

    496188814@qq.com,这个是我的邮箱。

    谢谢你们了。
    2009年3月23日 2:04

答案

  • (1)你可以利用Sql Server 2000自带的XML功能来生成XML。
    请参考以下链接:
    http://msdn.microsoft.com/zh-cn/library/ms950789.aspx

    (2)最简单的办法,你可以使用程序,读取XML文档,然后一条一条地导入到Access或者Excel中

    理解的越多,需要记忆的就越少
    2009年3月23日 11:11
    版主
  • 这是个很简单的问题,网上有代码,你参考一下。 


    假设有如下的XML文件:
    <?xml version="1.0" encoding="utf-8" ?>
    <users>
      
    <user code="lm">
        
    <name>黎明</name>
        
    <sex>male</sex>
        
    <age>28</age>
      
    </user>
      
    <user code="sq">
        
    <name>舒淇</name>
        
    <sex>female</sex>
        
    <age>27</age>
      
    </user>
    </users>

      代码如下:

    //请将ACCESS数据库的路径替换为实际的路径
    using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:\demo.mdb"))
    {
        cn.Open();
        
    using (OleDbCommand cmd = new OleDbCommand())
        {
            cmd.Connection
    = cn;
            cmd.CommandType
    = CommandType.Text;
            
            XmlDocument xml
    = new XmlDocument();
            
    //请将XML的路径替换为实际的路径
            xml.Load(@"d:\demo.xml");

            
    //取得所有的user
            XmlNodeList xn = xml.GetElementsByTagName("user");

            
    //遍历所有的user
            foreach (XmlElement xe in xn)
            {
                cmd.CommandText
    = string.Format("INSERT INTO userinfo([UserCode],[UserName],[UserSex],[UserAge]) VALUES ('{0}', '{1}', '{2}', {3})",
                xe.GetAttribute(
    "code"),    //取得code
                xe.ChildNodes[0].InnerText, //取得Name
                xe.ChildNodes[1].InnerText, //取得Sex
                xe.ChildNodes[2].InnerText  //取得Age
                );

                
    //插入数据
                cmd.ExecuteNonQuery();
            }
        }
    }

    微软技术,世界动力
    2009年3月23日 17:27
    版主

全部回复

  • Hi man

    dataset  is ok with this
    热烈庆祝进入4星活跃用户队伍
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年3月23日 3:07
  • (1)你可以利用Sql Server 2000自带的XML功能来生成XML。
    请参考以下链接:
    http://msdn.microsoft.com/zh-cn/library/ms950789.aspx

    (2)最简单的办法,你可以使用程序,读取XML文档,然后一条一条地导入到Access或者Excel中

    理解的越多,需要记忆的就越少
    2009年3月23日 11:11
    版主
  • 首先谢谢楼上2位的关注和关心。
    对于你们来说,这个应用程序很简单。我自己也在做,但是没有做的很好,
    所以想借借高手们的曾经写过的程序来丰富自己。
    所以,如果有程序的朋友们发到 496188814@qq.com这个邮箱,小弟先谢了。
    2009年3月23日 11:39
  • 这是个很简单的问题,网上有代码,你参考一下。 


    假设有如下的XML文件:
    <?xml version="1.0" encoding="utf-8" ?>
    <users>
      
    <user code="lm">
        
    <name>黎明</name>
        
    <sex>male</sex>
        
    <age>28</age>
      
    </user>
      
    <user code="sq">
        
    <name>舒淇</name>
        
    <sex>female</sex>
        
    <age>27</age>
      
    </user>
    </users>

      代码如下:

    //请将ACCESS数据库的路径替换为实际的路径
    using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:\demo.mdb"))
    {
        cn.Open();
        
    using (OleDbCommand cmd = new OleDbCommand())
        {
            cmd.Connection
    = cn;
            cmd.CommandType
    = CommandType.Text;
            
            XmlDocument xml
    = new XmlDocument();
            
    //请将XML的路径替换为实际的路径
            xml.Load(@"d:\demo.xml");

            
    //取得所有的user
            XmlNodeList xn = xml.GetElementsByTagName("user");

            
    //遍历所有的user
            foreach (XmlElement xe in xn)
            {
                cmd.CommandText
    = string.Format("INSERT INTO userinfo([UserCode],[UserName],[UserSex],[UserAge]) VALUES ('{0}', '{1}', '{2}', {3})",
                xe.GetAttribute(
    "code"),    //取得code
                xe.ChildNodes[0].InnerText, //取得Name
                xe.ChildNodes[1].InnerText, //取得Sex
                xe.ChildNodes[2].InnerText  //取得Age
                );

                
    //插入数据
                cmd.ExecuteNonQuery();
            }
        }
    }

    微软技术,世界动力
    2009年3月23日 17:27
    版主