none
从数据表中读取数据到dataset后,用writexml和WriteXmlSchema方法导出xsd和xml文件后,如何导入到结构相同的另一个表中 RRS feed

  • 问题

  • 请问:
    从数据表中读取数据到dataset后,用writexml和WriteXmlSchema方法导出xsd和xml文件后,如何导入到结构相同的另一个表中?
    导出的代码如下:
    --------------------------------------------------------------------------------------------------------------------------------------------------------
     try
                {
                    string sql = "SELECT [TemplateID],[TemplateName],[Xkbm],[TemplateImage],[PageCount],[PageValues],[Smark] ,[Sunmark],[Smin] ,[Mmark]" +
                    ",[Munmark],[Mmin],[Tmark],[Tunmark],[Tmin],[IsMedian],[IsCrop],[Width],[Height],[CropX],[CropY],[Blank],[BlankType],[TemplateType],[ImageSize]" +
                    ",[KeyImageDir],[PaperImageDir],[ScanType] ,[Angle],[RemoveBlackPercentage],[IsAutoAdjustAreaPosition],[Auto_AdjustX],[Auto_AdjustY],[UserId] " +
                    " FROM [Templates] where templateid=" + this.templateid;
                    sql += ";";
                    sql += "SELECT [Id],[TemplateId],[PageName],[Image],[FileName],[PageSerialNO],[ImageNameType],[AngleType] FROM [TemplatePage] where templateid=" + this.templateid;
                    sql += ";";
                    sql += "SELECT [Id],[AreaId],[AreaType],[TemplateId],[Left],[Top],[Width],[Height],[PageName],[ResultType],[DataType],[ArrayType],[ArrayCount],[ArrayLength],[BlankIdentValue],[MultiIdentValue],[IsKey] FROM [T_OmrArea] where templateid=" + this.templateid;
                    sql += ";";
                    sql += "SELECT [Id],[TemplateID],[FieldId],[FieldName],[Left],[Top],[Width],[Height],[Page],[Type],[AreaId] FROM [TemplateFields]  where templateid=" + this.templateid;
                    sql += ";";
                    DataSet dstemplate = sqldata.GetDataSet(sql);
                    dstemplate.WriteXmlSchema(fbdexport.SelectedPath + @"\" + ctemplate.TemplateName + @".xsd");
                    dstemplate.WriteXml(fbdexport.SelectedPath + @"\" + ctemplate.TemplateName + @".xml");

                }
                catch (Exception exp)
                {
                    MessageBox.Show("导出模板失败", "模板编辑工具", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
    ---------------------------------------------------------------------------------------------------------------------------------------------
    请问如何将得到的xml数据文件中的数据导入回到结构相同的表中?

    2009年9月27日 4:13

答案

  • 你导入另一个表 需要指定字段元素 考虑用linq xml
    例子参考
      
            static void Main(string[] args)
            {
              
                XDocument xd  =XDocument.Load(@"G:\vskzt\ConsoleApplication1\ConsoleApplication1\xmls.xml");
                var a = xd.Element("a").Elements("b");
                foreach (var b in a)
                {
                    Console.Write(b.Value);//输出是n2
                }
           
        

            }
        }
    xml文件
    <?xml version="1.0" encoding="utf-8"?>
    <a>
      <b t="1">n</b>
      <b t="1">2</b>
    </a>

    2009年9月27日 5:30
  • 你好!

    你好你可以利用 SQL 的 OPENXML 语句读取 XML 文件。同时 SQL  SERVER 也提供了 FOR XML 的 SELECT  子句可以生成 XML

    知识改变命运,奋斗成就人生!
    2009年9月27日 5:38
    版主

全部回复

  • 你好!

    DataSet 存取 XML 可以通过下面的方式同时存取结构及数据
    保存
    WriteXml("YourPath.xml", XmlWriteMode.WriteSchema);
    读取
    ReadXml("YourPath.xml", XmlReadMode.ReadSchema);

    知识改变命运,奋斗成就人生!
    2009年9月27日 4:42
    版主
  • 谢谢X.X.Y。
    但如果我使用WriteXml("YourPath.xml", XmlWriteMode.WriteSchema)写到xml文件中,我如何直接用代码可以将其导入到sqlserver表中?
    也就是假如我从数据库表template中查询了数据存入了DataSet中,并导出了一个文件mydata.xml,我如何将mydata.xml直接导入到表template中呢?
    2009年9月27日 5:06
  • 你导入另一个表 需要指定字段元素 考虑用linq xml
    例子参考
      
            static void Main(string[] args)
            {
              
                XDocument xd  =XDocument.Load(@"G:\vskzt\ConsoleApplication1\ConsoleApplication1\xmls.xml");
                var a = xd.Element("a").Elements("b");
                foreach (var b in a)
                {
                    Console.Write(b.Value);//输出是n2
                }
           
        

            }
        }
    xml文件
    <?xml version="1.0" encoding="utf-8"?>
    <a>
      <b t="1">n</b>
      <b t="1">2</b>
    </a>

    2009年9月27日 5:30
  • 你好!

    你好你可以利用 SQL 的 OPENXML 语句读取 XML 文件。同时 SQL  SERVER 也提供了 FOR XML 的 SELECT  子句可以生成 XML

    知识改变命运,奋斗成就人生!
    2009年9月27日 5:38
    版主