在项目的开发中使用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 查看本文来源