c# windows程序通過(guò)WebService傳輸數(shù)據(jù),如果傳輸?shù)臄?shù)據(jù)是DataSet,把DataSet轉(zhuǎn)換成string進(jìn)行傳輸,可以大大降低傳輸時(shí)間!
//客戶端
private string DataSetToString(DataSet ds)
{
//!@&為表的連接字符串,#$%為行的連接字符串,^&*為字段的連接字符串
//為了保證連接字符串不在DataSet數(shù)據(jù)中存在,連接字符串盡量復(fù)雜!
StringBuilder strData = new StringBuilder();
foreach (DataTable dt in ds.Tables)//遍歷ds的表
{
if (strData.Length > 0)//從第一個(gè)表開(kāi)始,加上表的連接字符串
strData.Append("!@&");
for (int m = 0; m < dt.Rows.Count; m++)//遍歷dt的行
{
DataRow row = dt.Rows[m];
for (int n = 0; n < dt.Columns.Count; n++)//遍歷row的列
{
if (m > 0)//從第二行數(shù)據(jù)開(kāi)始,加上行的連接字符串
{
strData.Append("#$%");
}
if (n > 0)//從第二個(gè)字段開(kāi)始,加上字段的連接字符串
{
strData.Append("^&*");
}
strData.Append(Convert.ToString(row[n]));//取數(shù)據(jù)
}
}
}
return strData.ToString();
}
然后在服務(wù)器端:
把string轉(zhuǎn)換成DataSet進(jìn)行操作
/// <summary>
/// 解析成DataSet
/// </summary>
/// <param name="vsData">數(shù)據(jù)字符串</param>
/// <param name="dsClone">克隆的原來(lái)DataSet的結(jié)構(gòu),沒(méi)有數(shù)據(jù)</param>
/// <returns></returns>
private DataSet StringToDataSet(string vsData,DataSet dsClone)
{
string[] strTable = { "!@&" };//分解表的連接字符串
string[] strRow = { "#$%" };//分解行的連接字符串
string[] strColumn = { "^&*" };//分解字段的連接字符串
string[] vsTables = vsData.Split(strTable, StringSplitOptions.None);//解析成表的字符串?dāng)?shù)據(jù)
for(int tableIndex = 0 ;tableIndex < vsTables.Length;tableIndex ++)//表的字符串?dāng)?shù)組遍歷
{
string vsTable = vsTables[tableIndex];//取表的字符串
string[] vsRows = vsTable.Split(strRow, StringSplitOptions.None);//解析成行的字符串?dāng)?shù)組
for (int rowIndex = 0; rowIndex < vsRows.Length; rowIndex++)//行的字符串?dāng)?shù)組遍歷
{
DataRow rowNew = ds.Tables[tableIndex].NewRow();//表ds.Tables[tableIndex]新增行
string vsRow = vsRows[rowIndex];//取行的字符串
string[] vsColumns = vsRow.Split(strColumn, StringSplitOptions.None);//解析成字段數(shù)組
for (int columnIndex = 0; columnIndex < vsColumns.Length; columnIndex++)//字段的字符串?dāng)?shù)組遍歷
{
rowNew[columnIndex] = vsColumns[columnIndex];// 給每個(gè)字段賦值
}
ds.Tables[tableIndex].Rows.Add(vsRows);
}
}
return ds;
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。