有关从存储过程序列化数据的更好方法的建议。 [英] Suggestions for a better way to serialize data from a stored procedure.
问题描述
我正在创建一个服务,它接受来自ASP页面的存储过程和用户输入,并且应该将XML格式的数据返回给页面。我无法弄清楚如何实现这一目标。任何人都可以提出更好的方法来解决这个问题和/或解释我的方法中的缺陷吗?起初我用该方法返回一个字符串,然后我尝试用存储过程的结果编写一个XML文档,试图访问ASP页面上的XML文件。
我无法找到一个很好的例子来推断。如果需要更多说明,请告诉我。
谢谢!
这是我的代码隐藏:
I am creating a service that accepts a stored procedure and user input from an ASP page and is supposed to return the data in XML format back to the page. I am having trouble trying to figure out how to accomplish this. Can anyone suggest a better way to go about this and/or explain the flaw in my method? At first I was returning a string with the method, then I tried to just write an XML document with the results of the stored procedure in an attempt to access the XML file on the ASP page.
I have not been able to find a good example to extrapolate from. Please let me know if more clarification is needed.
Thank you!
Here is the code-behind I have:
public void DataExchange(string storedProcedure, string data)
{
string connString = ConfigurationManager.ConnectionStrings["DataExchangeConnString"].ConnectionString;
//string returnData = "";
int i = 0;
SqlParameter dataParameter = new SqlParameter();
dataParameter.Value = data;
dataParameter.ParameterName = "@data";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(storedProcedure, conn);
SqlDataReader reader = null;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(dataParameter);
try
{
conn.Open();
reader = cmd.ExecuteReader();
string FileName = @"..\xmlDOC\returnData.xml";
SqlDataAdapter objDataAdapter = new SqlDataAdapter(reader.ToString(), connString);
DataSet objDataSet = new DataSet("Data");
// Fill DataSet
objDataAdapter.Fill(objDataSet, "Data");
// Write DataSet contents to file
objDataSet.WriteXml(FileName, XmlWriteMode.IgnoreSchema);
//while (reader.Read())
//{
// for (i = 0; i < reader.FieldCount; i++)
// {
// returnData += (reader[i] + "|");
// }
// return returnData;
//}
//return false.ToString();
}
catch (Exception)
{
throw;
}
finally
{
reader.Close();
conn.Close();
}
}
推荐答案
试试这个
使用Generics
public static string SerializeToXml<T>(T value)
{
StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(writer, value);
return write.ToString();
}
没有泛型
Without Generics
public static string SerializeToXml(object value)
{
StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
XmlSerializer serializer = new XmlSerializer(value.GetType());
serializer.Serialize(writer, value);
return writer.ToString();
}
反序列化
function T Deserialize<T>(string s)
{
var serializer = new XmlSerializer(typeof(T));
var stringReader = new StringReader(serializedResults);
var obj = (T)serializer.Deserialize(stringReader);
stringReader.Dispose();
return obj;
}
这篇关于有关从存储过程序列化数据的更好方法的建议。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!