如何解决Remoting无法传输存储过程参数的问题

存储过程|解决|问题

   在项目的开发中使用Remoting,并且所有的数据请求服务都是通过Remoting完成的,所以自然就在其中到了传递参数的存储过程,在业务逻辑中把参数构建好后传递到Remoting服务端,在取出存储过程的参数时报错,具体错误不记得了,自己尝试了各种方法也不行,上网资讯也没有结果,最后变通了一下,问题解决了,例子如下:

以下部分为客户调用端

 1//先声明参数
 2        private const string PARAM_GUID = "@GUID";
 3        private const string PARAM_VGA_TREEGUID = "@VGATreeGUID";
 4        private const string PARAM_MB_TREEGUID = "@MBTreeGUID";
 5
 6        public static string GetProductTypeByGUID(string GUID, String VGATreeID, String MbTreeID)
 7        {
 8            try
 9            {
10                int lcID = Thread.CurrentThread.CurrentUICulture.LCID;
11
12                BaseModel bt = new BaseModel();
13
14                //构建一个哈希表,把参数依次压入
15                Hashtable parames = new Hashtable();
16                parames.Add(PARAM_PROGUID, GUID);
17                parames.Add(PARAM_VGA_TREEGUID, VGATreeID);
18                parames.Add(PARAM_MB_TREEGUID, MbTreeID);
19
20                //把存储过程名称和带参数的哈希表传入
21                DataAccess.DataBase.RunProcedureDataSet(lcID, "GetProductTypeByTreeID", parames, ref bt);
22
23                return bt.Rows[0]["ProductType"].ToString();
24            }
25            catch (Exception ex)
26            {
27                CommFunction.WriteErrorLogFile("public static string GetProductTypeByGUID(stirng GUID, String VGATreeID, String MbTreeID)出错:" + ex.Message);
28                return "Other";
29            }
30        }
31
32

以下为服务端:

 1public void Query(int lcid, string SQLString, Hashtable cmdHashtable, ref BaseModel baseModel)#region public void Query(int lcid, string SQLString, Hashtable cmdHashtable, ref BaseModel baseModel)
 2        // -------------------------------------------------------------
 3        public void Query(int lcid, string SQLString, Hashtable cmdHashtable, ref BaseModel baseModel)
 4        {
 5            if (!CheckRemotingClient())
 6            {
 7                return;
 8            }
 9            Console.WriteLine(DateTime.Now.ToString() + "调用了Query(" + lcid.ToString() + ", string SQLString, Hashtable cmdHashtable, ref BaseModel baseModel)");
10            int i = cmdHashtable.Count;
11            //以下构造存储过程参数
12            SqlParameter[] cmdParms = new SqlParameter[i];
13            int j = 0;
14            foreach (DictionaryEntry de in cmdHashtable)
15            {
16                cmdParms[j] = new SqlParameter(de.Key.ToString(), de.Value);
17                j++;
18            }
19            Colorful.DBUtility.DbHelperSQL.Query(lcid, SQLString, cmdParms, ref  baseModel);
20        }
21        // --------------------------------------------------------------------
22        #endregion

时间: 2024-11-18 01:06:26

如何解决Remoting无法传输存储过程参数的问题的相关文章

如何解决JOB的Interval输入参数过长

本文根据一段错误代码从而来分析如何解决JOB的Interval输入参数过长的问题. 给出的运行JOB的PL/SQL代码为: DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate; broken BOOLEAN := FALSE; BEGIN WHAT :mydate := next_date; IF broken THEN :b := 1; ELSE :b :=0; END IF; END; 并说明了如何使用NEXT_DATE

sqlserver-如何获取SQL SERVER 2008 存储过程参数默认值

问题描述 如何获取SQL SERVER 2008 存储过程参数默认值 比如我的存储过程创建语句如下: CREATE PROC [dbo].[SearchBillDetail] ( @OpBeginDate DATETIME , @OpEndDate DATETIME , @BillTypeID INT , @BillOperType INT , @SaleOperID INT = 1, @DrCompID INT = NULL ) AS SET NOCOUNT ON -- 后面省略 这是我需要通

在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?

继续讨论EF中使用存储过程的问题,这回着重讨论的是为存储过程的参数进行赋值的问题.说得更加具体一点,是如何为实体映射的Delete存储过程参数进行赋值的问题.关于文中涉及的这个问题,我个人觉得是EF一个有待改进的地方,不知道各位看官是否同意? 目录 一.EF存储过程参数赋值的版本策略 二.Delete存储参数就一定是Original值吗? 三.如果直接修改.edmx模型的XML呢? 四.为Delete存储过程参数赋上Current值,如何做得到? 一.EF存储过程参数赋值的版本策略 和传统的基于

MySQL 存储过程参数:in、out、inout

一.MySQL 存储过程参数(in) MySQL 存储过程 "in" 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible). Java代码   drop procedure if exists pr_param_in;   create procedure pr_param_in(       in id int -- in 类型的 MySQL 存储过程参数  

【DataGuard】10GR 日志传输服务参数

日志的传输以及应用可以算作是Dataguard的核心所在.在我们搭建DG的过程中,如何配置优化日志传输服务,关系到整个DG体系的性能以及可用性.而且,不同的保护模式也需要不用的参数组合.10g下,影响配置日志传输的参数主要有以下几个: 1. ARCH/LGWR 设置日志的传送模式,默认使用arch传送.传送发生在日志切换边沿,最大可用和最大保护模式下,需要使用lgwr来传送日志.使用lgwr传送日志,需要备库建立standby logfile,并且支持日志的实时应用. 2. SYNC /ASYN

详解MySQL存储过程参数有三种类型(in、out、inout)_Mysql

一.MySQL 存储过程参数(in) MySQL 存储过程 "in" 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible). 复制代码 代码如下: drop procedure if exists pr_param_in; create procedure pr_param_in ( in id int -- in 类型的 MySQL 存储过程参数 ) begi

如何解决页面之间传输中文乱码的问题

如何解决页面之间传输中文乱码的问题hbzxf(阿好)http://www.cnblogs.com/hbzxf 有的时候我们需要在页面之间传输中文,但是.NET模认在Webconfig中为我们建立的编码格式为utf-8,于是在传输中文的时候变成了乱码,相应的接受也会是乱码信息,如何解决这个问题,我们可以用两种方法. 更改Webconfig中的编码方式,如下:1.在你的web.config中把编码 <globalization requestEncoding="utf-8" resp

WDM技术难点解决 北电40G传输解决方案

1 引言在宽带数据业务的大力驱动下,路由器40G接口已经开始商用,40G波分复用(WDM)技术的难点逐步解决,近期人们讨论的技术焦点已经不再是40G WDM是否可商用, 而是在考虑实际网络中应该选择 什么样的技术来部署40G WDM系统.2 40G WDM技术目前,全球各个电信设备制造商为实现40GWDM采用了各种各样的创新技术.其中,最 复杂的是编码/调制技术,包括:(1)编码技术:NRZ(不归零码),RZ(归零码),CRZ(啁啾RZ),FSRZ(全谱RZ),ODB(光二进制码),PSBT(相

解决TCP网络传输“粘包”问题

当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务.UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务.在实际工程应用中,对可靠性和效率的选择取决于应用的环境和需求.一般情况下,普通数据的网络传输采用高效率的udp,重要数据的网络传输采用