日期:2014-05-17  浏览次数:20730 次

服务端如何返回DataSet类型
winform程序,目前遇到的问题是这样的

我有一个服务器和一个客户机,服务器负责数据库的查询,客户发送查询字符串和接受服务器返回的结果

但是我想知道如果我需要的是一个dataset类型的返回结果,服务器用什么方法才能把这样的结果返回过来

用的是TCP连接,我目前只能让服务器返回string类型的结果

求大神指导

------解决方案--------------------
把dataset的数据序列化,然后进行传输
------解决方案--------------------
dataset以流的方式写成xml,然后生成xml的字符串传给客户端
客户端根据xml字符串在生成dataset

DataSet.WriteXml(...);

DataSet.ReadXml(...);
------解决方案--------------------
写的示例如下:收到后转成 DataSet 是 ds.ReadXml
private void button1_Click(object sender, EventArgs e)
{
    DataSet ds;
    TcpClient tc;
    //// 获取 ds 和连接 tc
    WriteDataSet(ds, tc.GetStream());
}

private void WriteDataSet(DataSet ds, NetworkStream stream)
{
    ds.WriteXml(stream, XmlWriteMode.WriteSchema);
}

------解决方案--------------------
引用:
dataset以流的方式写成xml,然后生成xml的字符串传给客户端
客户端根据xml字符串在生成dataset

DataSet.WriteXml(...);

DataSet.ReadXml(...);


这是正解 ,服务端只能返回XML形式的字符串,的在客户端生产。反序列化
------解决方案--------------------
下面可以把收的数据写入c:\1.xml
FileStream fs = new FileStream(@"c:\1.xml", FileMode.Create);
int b;
while ((b = tc.GetStream().ReadByte()) != -1)
{
    fs.WriteByte((byte)b);
}
fs.Close();

------解决方案--------------------
最好是一次连接取一个数据集,马上断开,否则判断结束是个问题,因为 TCP 发送数据是论字节的。
------解决方案--------------------
干嘛不序列化成字节