1.将从数据库中抽取出来的数据转换成数组,再将数组插入list中
1)从数据库中抽取数据
` MySqlParameter param1 = new MySqlParameter(“?_work_no”, MySqlDbType.String, 20);
param1.Value = work_no + “”;
MySqlParameter[] parameters = { param1 };
reader2 = ExcuteReader(“GetRouteFromView”, CommandType.StoredProcedure, parameters)
2)将数组插入List中
List<System.String> listS = new List<System.String>();
while (reader2.Read())
{
Console.WriteLine(reader2[0].ToString() + "###" + reader2.GetValue(1).ToString());
String[] arr = new String[] { reader2[0].ToString(), reader2.GetValue(1).ToString(), reader2.GetValue(2).ToString(), reader2.GetValue(3).ToString() };
listS.AddRange(arr);
}
3)将List对象序列化
string temp = HomeController.Serializer(listS.GetType(), listS);
序列化方法:
public static string Serializer(Type type, object obj)
{
MemoryStream Stream = new MemoryStream();
XmlSerializer xml = new XmlSerializer(type);
try
{
//序列化对象
xml.Serialize(Stream, obj);
}
catch (InvalidOperationException)
{
throw;
}
Stream.Position = 0;
StreamReader sr = new StreamReader(Stream);
string str = sr.ReadToEnd();
sr.Dispose();
Stream.Dispose();
return str;
}
2.直接将数据库抽取的表格放到DataSet,然后再通过将DataSet转化成XML,返回字符串
public string GetPositionXML(string work_no)
{
//MySqlDataReader reader2 = null;
string strXML = "";
try
{
//访问数据库,查询数据
MySqlParameter param1 = new MySqlParameter("?_work_no", MySqlDbType.String, 20);
param1.Value = work_no + "";
MySqlParameter[] parameters = { param1 };
strXML = ExcuteReaderXmL("GetRouteFromView", CommandType.StoredProcedure, parameters);
return strXML;
}
catch (Exception e)
{
return "查询出现异常" + e.ToString();
}
finally
{
// reader2.Close();
}
}
//将DataSet转化成XML,返回字符串
static public string ExcuteReaderXmL(string sql, CommandType type, params MySqlParameter[] parameters)
{
MySqlConnection conn = new MySqlConnection();
//链接数据库相关地址
string str = "";
try
{
conn.Open();
Console.WriteLine("成功连接到数据库!");
MySqlDataAdapter adapter = new MySqlDataAdapter();
// MySqlCommand command = new MySqlCommand(sql, conn);
adapter.SelectCommand = new MySqlCommand(sql, conn);
adapter.SelectCommand.CommandType = type;
DataSet ds = new DataSet();
DataTable dt = new DataTable("userData");
if (parameters != null)
{
adapter.SelectCommand.Parameters.AddRange(parameters);
adapter.Fill(ds);
ds.DataSetName = "Positions";
str = ConvertDataSetToXML(ds);
}
return str;
}
catch (System.Exception e)
{
throw new Exception(e.Message);
}
finally
{
// conn.Close();
}
}
//将dataset转化成字符串
public static string ConvertDataSetToXML(DataSet xmlDS)
{
MemoryStream stream = null;
XmlTextWriter writer = null;
try
{
stream = new MemoryStream();
//从stream装载到XmlTextReader
writer = new XmlTextWriter(stream, Encoding.Unicode);
//用WriteXml方法写入文件.
xmlDS.WriteXml(writer);
int count = (int)stream.Length;
byte[] arr = new byte[count];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(arr, 0, count);
UnicodeEncoding utf = new UnicodeEncoding();
return utf.GetString(arr).Trim();
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
if (writer != null) writer.Close();
}
}