在項目的開發中使用Remoting
並且所有的數據請求服務都是通過Remoting完成的
所以自然就在其中到了傳遞參數的存儲過程
在業務邏輯中把參數構建好後傳遞到Remoting服務端
在取出存儲過程的參數時報錯
具體錯誤不記得了
自己嘗試了各種方法也不行
上網資訊也沒有結果
最後變通了一下
問題解決了
例子如下
以下部分為客戶調用端 //先聲明參數
private const string PARAM_GUID =
@GUID
;
private const string PARAM_VGA_TREEGUID =
@VGATreeGUID
;
private const string PARAM_MB_TREEGUID =
@MBTreeGUID
;
public static string GetProductTypeByGUID(string GUID
String VGATreeID
String MbTreeID)
{
try
{
int lcID = Thread
CurrentThread
CurrentUICulture
LCID;
BaseModel bt = new BaseModel();
//構建一個哈希表
把參數依次壓入
Hashtable parames = new Hashtable();
parames
Add(PARAM_PROGUID
GUID);
parames
Add(PARAM_VGA_TREEGUID
VGATreeID);
parames
Add(PARAM_MB_TREEGUID
MbTreeID);
//把存儲過程名稱和帶參數的哈希表傳入
DataAccess
DataBase
RunProcedureDataSet(lcID
GetProductTypeByTreeID
parames
ref bt);
return bt
Rows[
][
ProductType
]
ToString();
}
catch (Exception ex)
{
CommFunction
WriteErrorLogFile(
public static string GetProductTypeByGUID(stirng GUID
String VGATreeID
String MbTreeID)出錯
+ ex
Message);
return
Other
;
}
}
以下為服務端 public void Query(int lcid
string SQLString
Hashtable cmdHashtable
ref BaseModel baseModel)#region public void Query(int lcid
string SQLString
Hashtable cmdHashtable
ref BaseModel baseModel)
//
public void Query(int lcid
string SQLString
Hashtable cmdHashtable
ref BaseModel baseModel)
{
if (!CheckRemotingClient())
{
return;
}
Console
WriteLine(DateTime
Now
ToString() +
調用了Query(
+ lcid
ToString() +
string SQLString
Hashtable cmdHashtable
ref BaseModel baseModel)
);
int i = cmdHashtable
Count;
//以下構造存儲過程參數
SqlParameter[] cmdParms = new SqlParameter[i];
int j =
;
foreach (DictionaryEntry de in cmdHashtable)
{
cmdParms[j] = new SqlParameter(de
Key
ToString()
de
Value);
j++;
}
Colorful
DBUtility
DbHelperSQL
Query(lcid
SQLString
cmdParms
ref baseModel);
}
//
#endregion
From:http://tw.wingwit.com/Article/program/net/201311/11526.html