我目前正在处理一个案例,我必须从数据库导入大量数据并将其输出为与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
附加信息:对象不能存储在此数组中 类型。
我不确定我错过了什么。
感谢您的帮助。
答案 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");
}
}
}