通过编程简单地将XML文档数据导入到SQL Server数据库中

来源:互联网 发布:sql两张表关联查询 编辑:程序博客网 时间:2024/06/05 15:54

这几天写一个Windows Mobile小程序,其中要用到原先的XML文档,现在想用SQL Server 2005 Compact 了,就到处找办法想将XML数据文档导入到SQL Server数据库中,可是我对SQL Server及其SQL语句都不太熟悉,加之MSDN语焉不详,费了我老大的劲啊,最终无法快速地将XML成功导入到SQL Server数据库中。

今天想到以前用到过DataSet,DataSet对于读取XML是很有一套的,只需一个方法就行:ReadXML(); 于是就想“曲线救国”了,但是在网络上还是没找到“多、快、好、省”的办法,不过许多网友的文章还是有所启示的。后来找到一个DataSet比较少用的方法Merge(),然后又借助于网友们对数据库更新的经验,经过几次试验总算可以大叫一声了!呵呵

示例如下:

           ..............

            private string connectionString = SQLTest.Properties.Settings.Default.FreeStudyConnectionString;

            //我在数据库中建立了一个空表,其结构与XML文档一致,
            private string selectString = "Select * From EnglishWords";             

            ..............

            SqlCeConnection ceConnection = new SqlCeConnection(connectionString);
            SqlCeDataAdapter ceAdapter = new SqlCeDataAdapter(selectString, ceConnection);
            ceAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey         

            SqlCeCommandBuilder ceCommandBuilder = new SqlCeCommandBuilder(ceAdapter);
            ceCommandBuilder.GetUpdateCommand();
            ceCommandBuilder.GetInsertCommand();
            
            ceConnection.Open();

            DataSet dsSql = new DataSet();
            ceAdapter.FillSchema(dsSql, SchemaType.Source, "EnglishWords");
            ceAdapter.Fill(dsSql);

            DataSet dsXml = new DataSet();
            dsXml.ReadXml("Words.xml");

            //关键点,进行两个数据集的合并        

            dsSql.Merge(dsXml.Tables["EnglishWords"]);

            int intUp = ceAdapter.Update(dsSql,"EnglishWords");
            dsSql.AcceptChanges();

            ..............

原创粉丝点击