在項目的開發中使用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
新聞熱點
疑難解答