關於在.net通過XML傳送資料
阿新 • • 發佈:2019-02-14
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();
}
}