【发布时间】:2014-02-13 21:29:45
【问题描述】:
我有一个定义的对象列表。我想从存储过程中填充它们,然后将它们序列化以传递给 XML 文件。我被困在如何做到这一点上。这是我到目前为止所拥有的。我不想使用 LINQ。
在图书馆类中我有这个:
public class Person
{
public static string First_Name { get; set; }
public static string Last_Name { get; set; }
public static string Address1 { get; set; }
public static string Address2 { get; set; }
}
在数据库类中我有这个:
conn = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
using (var cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "sp_GetInfo";
cmd.Parameters.Add(CreateParameter("@Id", SqlDbType.Int, Id));
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
string First_Name = dr.GetString(0);
string Last_Name = dr.GetString(1);
string Address1 = dr.GetString(2);
string Address2 = dr.GetString(3);
dr.Close();
dr.Dispose();
}
为了序列化我打算使用这个:
public static string Serialize(object obj)
{
XmlSerializer xs = new XmlSerializer(obj.GetType());
MemoryStream buffer = new MemoryStream();
xs.Serialize(buffer, obj);
return ASCIIEncoding.ASCII.GetString(buffer.ToArray());
}
我是在正确的道路上还是我需要以不同的方式看待这个问题?
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: c# sql sql-server xml xml-serialization