科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道解Remoting无法传输存储过程参数

解Remoting无法传输存储过程参数

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

    在项目的开发中使用Remoting,并且所有的数据请求服务都是通过Remoting完成的,所以自然就在其中到了传递参数的存储过程,在业务逻辑中把参数构建好后传递到Remoting服务端,在取出存储过程的参数时报错,具体错误不记得了。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字: 存储 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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件