#region 公共方法
/// <summary>
/// 根據不同條件取得積分設置
/// </summary>
/// <param name="functionid">功能id</param>
/// <param name="operationid">操作id</param>
/// <param name="roletypeid">角色id</param>
/// <param name="bbstypeid">版塊類型di</param>
/// <param name="score">積分</param>
/// <param name="bb">幣幣</param>
/// <param name="buytype">購買類型</param>
/// <param name="functionstate">功能狀態</param>
/// <returns></returns>
public bool getspecialinfo(int functionid,int operationid,int roletypeid,int bbstypeid,int score,int bb,int buytype,int functionstate)
{
sqldataadapter dataadapter = null;
database data = new database("town");
#region 創建參數
arraylist sqlparameterlist=new arraylist();
if(functionid!=-1)
sqlparameterlist.add(data.makeinparam("@functionid", sqldbtype.int, 4, functionid));
if(operationid!=-1)
sqlparameterlist.add(data.makeinparam("@operationid", sqldbtype.int, 4, operationid));
if(roletypeid!=-1)
sqlparameterlist.add(data.makeinparam("@roletypeid", sqldbtype.int, 4, roletypeid));
if(bbstypeid!=-1)
sqlparameterlist.add(data.makeinparam("@bbstypeid", sqldbtype.int, 4, bbstypeid));
if(score!=-1)
sqlparameterlist.add(data.makeinparam("@score", sqldbtype.int, 4, score));
if(bb!=-1)
sqlparameterlist.add(data.makeinparam("@bb", sqldbtype.int, 4, bb));
if(buytype!=-1)
sqlparameterlist.add(data.makeinparam("@buytype", sqldbtype.int, 4, buytype));
if(functionstate!=-1)
sqlparameterlist.add(data.makeinparam("@functionstate", sqldbtype.int, 4, functionstate));
sqlparameter[] prams= new sqlparameter[sqlparameterlist.count];
for( int i=0;i<sqlparameterlist.count;i++)
{
prams[i]=(sqlparameter)sqlparameterlist[i];
}
#endregion
try
{
data.runproc("getscoresetting", prams, out dataadapter);
dataset dataset = new dataset();
dataadapter.fill(dataset,"table");
dataadapter.dispose();
if(dataset.tables["table"].rows.count == 0)
{
dataset.clear();
dataset.dispose();
return false;
}
else
{
foreach(datarow dr in dataset.tables["table"].rows)
{
scoresetting ss = new scoresetting();
ss.id= int32.parse(dr["scoresettingid"].tostring().trim());
ss.functionid= int32.parse(dr["functionid"].tostring().trim());
ss.operationid= int32.parse(dr["operationid"].tostring().trim());
ss.roletypeid= int32.parse(dr["roletypeid"].tostring().trim());
ss.bbstypeid= int32.parse(dr["bbstypeid"].tostring().trim());
ss.score= int32.parse(dr["score"].tostring().trim());
ss.bb= int32.parse(dr["bb"].tostring().trim());
ss.buytype= int32.parse(dr["buytype"].tostring().trim());
ss.functionstate= int32.parse(dr["functionstate"].tostring().trim());
add(ss);
}
dataset.clear();
dataset.dispose();
return true;
}
}
catch (exception ex)
{
error.log("town", ex.tostring());
dataadapter.dispose();
return false;
}
finally
{
data.close();
data.dispose();//釋放database
}
}
#endregion
}
}
一點說明:
數據層類分類的代碼分了六塊:私有成員、構造函數、公共屬性、索引、私有方法、公有方法。這里為類建立了索引,這是集合類的必須元素。然后有一個私有方法,作用是把對象加到集合中,公有方法就是一個查詢方法,上面的例子中是通過參數傳的,其實也可以用屬性傳。這里作了個約定,如果傳進的值為-1便認為此變量不起作用,基本跟存儲過程中的思想是一樣的。這個例子中的scoresetting對象是另外一個獨立的類,如下: