服务器端: 序列化DATASET using System.Xml.Serialization; using System.Data ; using System.IO;... 1、将dataset XML序列化 // //filename 为xml文件名 private void SerializeDataSet(string filename) { XmlSerializer ser = new XmlSerializer(typeof(DataSet));
// Creates a DataSet; adds a table, column, and ten rows. DataSet ds = new DataSet("myDataSet"); DataTable t = new DataTable("table1"); DataColumn c = new DataColumn("thing"); t.Columns.Add(c); ds.Tables.Add(t); DataRow r; for(int i = 0; i<10;i++) { r = t.NewRow(); r[0] = "Thing " + i; t.Rows.Add(r); } TextWriter writer = new StreamWriter(filename); ser.Serialize(writer, ds); writer.Close(); }2、开始使用Socket传输将xml文档读入转换为byte数组,然后Socket.send 具体实现代码不用给了吧^_^(偷懒中)3。客户端接收,写到一个XML文档中或用内存流(无所谓了)4、还原dataset 。。 DataSet ds=new DataSet("xx"); ds.ReadXml("c:\\me.xml"); 5、其它该你忙会了,我歇会,等着接分^_^.
这实现起来没有什么特别的地方呀
DataSet就是XML呀,XML是什么?就是String呀,你传String不就可以了吗?
建议使用WebService,下面给你一个例程由于使用了引用,因此DSResult就可以直接返回其中ClassMethods.DataError是我写的一个函数,用于把文本信息形成DataSet#region WebMethod GetExecuteQuery
/// <summary>
/// 执行SQL语句,并且返回TableName指定的数据表名。
/// </summary>[WebMethod]
public bool GetExecuteQuery(ref DataSet DSResult, string p_strQuery, string p_strTableName, string p_strSeed, string p_strCheck)
{
try
{
if (CheckSeed(p_strSeed, p_strCheck) == false)
{
DSResult = ClassMethods.DataMessage("身份校验错误!");
return false;
} SqlDataAdapter myCommand = new SqlDataAdapter (p_strQuery, CS);
myCommand.Fill(DSResult, p_strTableName);
return true;
}
catch(Exception ex)
{
DSResult = ClassMethods.DataError(ex);
return false;
}
}#endregion
应该这样的,不要把太多不必要的代码给你[WebMethod]
public bool GetExecuteQuery(ref DataSet DSResult, string p_strQuery, string p_strTableName, string p_strSeed, string p_strCheck)
{
try
{
SqlDataAdapter myCommand = new SqlDataAdapter (p_strQuery, CS);
myCommand.Fill(DSResult, p_strTableName);
return true;
}
catch(Exception ex)
{
DSResult = ClassMethods.DataError(ex);
return false;
}
}#endregion
up
序列化DATASET
using System.Xml.Serialization;
using System.Data ;
using System.IO;...
1、将dataset XML序列化
//
//filename 为xml文件名
private void SerializeDataSet(string filename)
{
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
// Creates a DataSet; adds a table, column, and ten rows.
DataSet ds = new DataSet("myDataSet");
DataTable t = new DataTable("table1");
DataColumn c = new DataColumn("thing");
t.Columns.Add(c);
ds.Tables.Add(t);
DataRow r;
for(int i = 0; i<10;i++)
{
r = t.NewRow();
r[0] = "Thing " + i;
t.Rows.Add(r);
}
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, ds);
writer.Close();
}2、开始使用Socket传输将xml文档读入转换为byte数组,然后Socket.send
具体实现代码不用给了吧^_^(偷懒中)3。客户端接收,写到一个XML文档中或用内存流(无所谓了)4、还原dataset
。。
DataSet ds=new DataSet("xx");
ds.ReadXml("c:\\me.xml");
5、其它该你忙会了,我歇会,等着接分^_^.
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconusingtcpservices.htm客户端使用Socket编程,将DataSet序列化后调用Socket.Send()发送,最后将DataSet还原即可。相关例子都可以在MSDN中找到。建议使用异步编程。