惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
博客园 - 司徒正美
P
Privacy International News Feed
G
Google Developers Blog
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
K
Kaspersky official blog
I
InfoQ
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Webroot Blog
Webroot Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
量子位
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
S
Security Affairs
Latest news
Latest news
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
S
Security Archives - TechRepublic
V
Visual Studio Blog
T
Troy Hunt's Blog
S
Secure Thoughts
F
Fortinet All Blogs
V
V2EX
The Register - Security
The Register - Security
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 左少白

oracle 找回DROP掉的表 求解,工作流点通过时,弹出窗口让用户录入审核意见 oracle 游标 c# 多态 sqlserver 按五分钟分组 c# 继承 查询行转列 oracle oracle trunc (date,dd )函数 oracle 游标 对象集合转换为datatable 用C# 正则 提取HTML标签中的值? oracle decode 与 case when ,空的处理 oracle select for update sql1 同期进度,完成率 Oracle Index 相關知識 玩转DevExpress.XtraGrid.view.gridview oracle索引 在Oracle中进行大小写不敏感的查询2
SqlParameter序列化的问题
左少白 · 2011-05-20 · via 博客园 - 左少白

SqlParameter remoting 客户端调用服务端方法: DataSet ExecuteProc(string procedurename, SqlParameter[] a);

              调用:  DataSet ds = SqlUtil.ExecuteProc("存储过程名", parameters);//

parameters  为

 SqlParameter[] 类型的实例

              报错: 由于安全限制,无法访问类型 System.Runtime.Remoting.ObjRef。原因是

SqlParameter不能序列化.需要添加一个类来转换.

 添加如下类:

namespace Modal.SerSqlParameter
{
    [Serializable]
    
public class SerSqlParameter
    {
        
public SerSqlParameter(SqlParameter sPara)
        {
            
this.paraName = sPara.ParameterName;
            
this.paraLen = sPara.Size;
            
this.paraVal = sPara.Value;
            
this.sqlDbType = sPara.SqlDbType;
        }
public SqlParameter ToSqlParameter()
        {
            SqlParameter para 
= new SqlParameter(this.paraName, this.sqlDbType, this.paraLen);
            para.Value 
= this.paraVal;
            
return para;
        }
private string paraName = "";
        
public string ParaName
        {
            
get { return this.paraName; }
            
set { this.paraName = value; }

        }

private int paraLen = 0;
        
public int ParaLen
        {
get { return this.paraLen; }
            
set { this.paraLen = value; }
        }
private object paraVal = null;
        
public object ParaVal
        {
            
get { return this.paraVal; }
            
set { this.paraVal = value; }
        }
private SqlDbType sqlDbType = SqlDbType.NVarChar;
        
public SqlDbType SqlDbType
        {
            
get { return this.sqlDbType; }set { this.sqlDbType = value; }
        }
    }
}

服务端原来的  

//原来的
public DataSet ExecuteProc(string procedurename, SqlParameter[] arParams)   { 
            DataSet ds 
= SqlUtil.ExecuteProc(procedurename, arParams);
            
return ds;
        }
//修改为
 public DataSet ExecuteProc(string procedurename, IList<SerSqlParameter> arParams)
        {
            SqlParameter[] p 
= new SqlParameter[arParams.Count];
            
for (int i = 0; i < arParams.Count;i++ )
            {
                p[i]
=arParams[i].ToSqlParameter();
            }
            DataSet ds 
= SqlUtil.ExecuteProc(procedurename, p);
            
return ds;
        }

客户端修改为 

//原来的调用
DataSet ds = SqlUtil.ExecuteProc("过程名", parameters);//修改后
 IList<SerSqlParameter> list = new List<SerSqlParameter>();
            
foreach (SqlParameter pa in parameters)
            { 
                SerSqlParameter serparam 
= new SerSqlParameter(pa);
                list.Add(serparam);
            }

 DataSet ds=SqlUtil.ExecuteProc("过程名",list);