2023年6月21日发(作者:)
SqlParameter序列化的问题SqlParameter remoting 客户端调⽤服务端⽅法: DataSet ExecuteProc(string procedurename, SqlParameter[] a); 调⽤: DataSet ds = eProc("存储过程名", parameters);// parameters 为 SqlParameter[] 类型的实例
报错: 由于安全限制,⽆法访问类型 。原因是SqlParameter不能序列化.需要添加⼀个类来转换. 添加如下类:namespace Parameter{ [Serializable] public class SerSqlParameter { public SerSqlParameter(SqlParameter sPara) { me = terName; n = ; l = ; ype = ype; } public SqlParameter ToSqlParameter() { SqlParameter para = new SqlParameter(me, ype, n); = l; return para; } private string paraName = ""; public string ParaName { get { return me; } set { me = value; } } private int paraLen = 0; public int ParaLen { get { return n; } set { n = value; } } private object paraVal = null; public object ParaVal { get { return l; } set { l = value; } } private SqlDbType sqlDbType = ar; public SqlDbType SqlDbType { get { return ype; } set { ype = value; } } }}服务端原来的
//原来的public DataSet ExecuteProc(string procedurename, SqlParameter[] arParams) {
DataSet ds = eProc(procedurename, arParams); return ds; }//修改为 public DataSet ExecuteProc(string procedurename, IList
客户端修改为
//原来的调⽤DataSet ds = eProc("过程名", parameters);//修改后 IList
SerSqlParameter serparam = new SerSqlParameter(pa); (serparam); } DataSet ds=eProc("过程名",list);
2023年6月21日发(作者:)
SqlParameter序列化的问题SqlParameter remoting 客户端调⽤服务端⽅法: DataSet ExecuteProc(string procedurename, SqlParameter[] a); 调⽤: DataSet ds = eProc("存储过程名", parameters);// parameters 为 SqlParameter[] 类型的实例
报错: 由于安全限制,⽆法访问类型 。原因是SqlParameter不能序列化.需要添加⼀个类来转换. 添加如下类:namespace Parameter{ [Serializable] public class SerSqlParameter { public SerSqlParameter(SqlParameter sPara) { me = terName; n = ; l = ; ype = ype; } public SqlParameter ToSqlParameter() { SqlParameter para = new SqlParameter(me, ype, n); = l; return para; } private string paraName = ""; public string ParaName { get { return me; } set { me = value; } } private int paraLen = 0; public int ParaLen { get { return n; } set { n = value; } } private object paraVal = null; public object ParaVal { get { return l; } set { l = value; } } private SqlDbType sqlDbType = ar; public SqlDbType SqlDbType { get { return ype; } set { ype = value; } } }}服务端原来的
//原来的public DataSet ExecuteProc(string procedurename, SqlParameter[] arParams) {
DataSet ds = eProc(procedurename, arParams); return ds; }//修改为 public DataSet ExecuteProc(string procedurename, IList
客户端修改为
//原来的调⽤DataSet ds = eProc("过程名", parameters);//修改后 IList
SerSqlParameter serparam = new SerSqlParameter(pa); (serparam); } DataSet ds=eProc("过程名",list);
发布评论