C# Winform socket 如何发送 带 SqlParameter 的sql语句

如题,我现在 有 客户端 服务端,用 socket通讯,客户端如何把 带参数的 sql语句发送到服务端,参数中有可能会有二进制类型

我补充一下,我的目的是 :客户端 把 sql语句发送给 服务端,服务端去执行,
现在 sql语句 有参数,参数的值可能有二进制

把参数做成数组,然后序列化成二进制流,在服务端将其反序列成参数对象则可

//将要发送给连接上来的客户端的提示字符串
string strDateLine = "sql xxxx";
Byte[] byteDateLine = System.Text.Encoding.ASCII.GetBytes(strDateLine);
//将提示信息发送给客户端
Client.Send(byteDateLine, byteDateLine.Length, 0);

http://zhupengyue.blog.51cto.com/227198/324869/

你得把数据转为socket 发送的 语句,再发给服务端,服务端在转回来

。 自己顶一个

以下是模拟序列化和反序列化的代码,调试过可以使用。不理解的话可以开个Console的工程吧代码贴进去先单步调试一下,理解其中的含义

    class Program
    {
        [Serializable]
        public class ParamArg
        {
            public String _name;
            public Object _value;

            public ParamArg(String name, Object value)
            {
                _name = name;
                _value = value;
            }
        }

        [Serializable]
        public class SendParam
        {
            public String sql;
            public List<ParamArg> paramList = new List<ParamArg>();

            public SqlParameter[] getSqlParameters()
            {
                SqlParameter[] ret = new SqlParameter[paramList.Count];
                for(int i = 0; i < paramList.Count; i ++)
                {
                    ret[i] = new SqlParameter(paramList[i]._name, paramList[i]._value);
                }
                return ret;
            }
        }

        static void Main(string[] args)
        {
            // 此处为发送部分代码
            MemoryStream ms = new MemoryStream();
            SendParam param = new SendParam();

            // 此处为需要传递的其他参数,比如sql文正文等信息
            param.sql = "SELECT * FROM xxx WHERE f1=...";
            // 此处增加需要传递到后台的参数
            param.paramList.Add(new ParamArg("abc", 100));
            BinaryFormatter serial = new BinaryFormatter();
            serial.Serialize(ms, param);
            // 将ms中的数据发送到远程.....

            /////////////////////////////////////////////////////////////////

            // 此处为模拟接收部分代码,将ms的初始位置设置为0,代表数据在服务端已经接收到ms对象中
            ms.Position = 0;

            // 此处为解码的代码:
            BinaryFormatter deserial = new BinaryFormatter();
            SendParam oo = (SendParam)deserial.Deserialize(ms);

            // 此处将远程的传过来的参数序列化成SqlParameter对象
            SqlParameter[] paramList = oo.getSqlParameters();
        }
    }

非常感谢
我在 论坛也提问了,你去回答下吧,我那里把分也给你
http://bbs.csdn.net/topics/392066049