C#如何填充从数据库

时间:2016-09-07 22:21:42

标签: c# xml xsd xml-serialization xsd.exe

我目前正在处理一个案例,我必须从数据库导入大量数据并将其输出为与xsd架构匹配的xml。我使用xsd.exe为特定模式生成c#类。

我的问题是,我如何使用这个类来填充来自数据库的数据?

我的班级看起来像这样:`

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "TTC_Queue")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "MT_Queue", IsNullable = false)]
    public partial class STAGING_Low
    {
        private object[] itemsField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("TTC_Queue", typeof(TTC_Queue))]
        [System.Xml.Serialization.XmlElementAttribute("ROW_COUNTS", typeof(ROW_COUNTS))]
        public object[] Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "TTC_Queue")]
    public partial class TTC_Queue
    {
        private System.Data.SqlTypes.SqlDecimal reportingUnitCodeField;

        private bool reportingUnitCodeFieldSpecified;

        private System.Data.SqlTypes.SqlString preparerNField;
        //more fields

`

我将拥有&#34; ttc_queue&#34;的多个元素。填充这个。 我已经填充了ttc_queue的对象[]以供在此使用。

如何将此数组设置为&#34;项目字段&#34;然后也反序列化了这个?

我目前有:

 STAGING_low low = new STAGING_Low();
low.Items = new TTC_Queue[1];
low.Items.SetValue(myObject[],0);

我在设置值时遇到错误:

  

未处理的类型&#39; System.InvalidCastException&#39;发生在mscorlib.dll

     

附加信息:对象不能存储在此数组中   类型。

我不确定我错过了什么。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我不认为序列化是正确的方法。如果您正确生成SQL查询,我认为下面的代码应该可以正常工作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet();
            ds.ReadXmlSchema("filename");
            string SQL = "SELECT QUERY";
            string connStr = "Enter you connection string here";
            SqlDataAdapter adapter = new SqlDataAdapter(SQL, connStr);
            adapter.Fill(ds);

            ds.WriteXml("filename");
        }
    }
}