C# 如何从数据库中填充从 xsd.exe 创建的 cass
C# how to populate cass created from xsd.exe from database
我目前正在处理一个案例,我必须从数据库中导入大量数据并将其输出为与 xsd 模式匹配的 xml。我使用 xsd.exe 为特定模式生成 c# class。
我的问题是,我如何使用此 class 来填充数据库中的数据?
我的 class 看起来像这样:`
[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
`
i 将在其中填充 "ttc_queue" 的多个元素。
我已经填充了一个 ttc_queue 的对象[] 以用于此。
如何将此数组设置为 "item fields" 然后反序列化它?
我目前有:
STAGING_low low = new STAGING_Low();
low.Items = new TTC_Queue[1];
low.Items.SetValue(myObject[],0);
我在设置值时遇到错误:
An unhandled exception of type 'System.InvalidCastException' occurred in mscorlib.dll
Additional information: Object cannot be stored in an array of this
type.
我不确定我错过了什么。
感谢您的帮助。
我认为在这种情况下序列化不是正确的方法。如果您正确生成 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");
}
}
}
我目前正在处理一个案例,我必须从数据库中导入大量数据并将其输出为与 xsd 模式匹配的 xml。我使用 xsd.exe 为特定模式生成 c# class。
我的问题是,我如何使用此 class 来填充数据库中的数据?
我的 class 看起来像这样:`
[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
`
i 将在其中填充 "ttc_queue" 的多个元素。 我已经填充了一个 ttc_queue 的对象[] 以用于此。
如何将此数组设置为 "item fields" 然后反序列化它?
我目前有:
STAGING_low low = new STAGING_Low();
low.Items = new TTC_Queue[1];
low.Items.SetValue(myObject[],0);
我在设置值时遇到错误:
An unhandled exception of type 'System.InvalidCastException' occurred in mscorlib.dll
Additional information: Object cannot be stored in an array of this type.
我不确定我错过了什么。
感谢您的帮助。
我认为在这种情况下序列化不是正确的方法。如果您正确生成 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");
}
}
}