有关从存储过程序列化数据的更好方法的建议。 [英] Suggestions for a better way to serialize data from a stored procedure.

查看:99
本文介绍了有关从存储过程序列化数据的更好方法的建议。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个服务,它接受来自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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆