在网络传输中,dataset的容易是很大的,如果传递数据量大的情况下,很影响速度。可以在中间层将dataset封装放到一个多维的数组中,传递的容量将大大减少。再由客户端进行折分出有属性的类,再由其他控件绑定。
例子如下:
中间层
public ArrayList pro_stock_seek1()
{
//OracleConnection myCn=new OracleConnection("Data Source=STZYD;User ID=zyd;PASSWORD=www8739146;persist security info=False;");
OracleConnection myCn=new OracleConnection(Login.strConn);
try
{
myCn.Open();
//object[] getstr=new object[2];
ArrayList arr1=new ArrayList();
ArrayList arr2=new ArrayList();
ArrayList arr3=new ArrayList();
OracleCommand MyDa=new OracleCommand("pro_stock_seek1",myCn);
MyDa.CommandType=CommandType.StoredProcedure;
OracleParameter []pa ={ new OracleParameter("cur_recorder",OracleType.Cursor)};
pa[0].Direction = ParameterDirection.Output;
MyDa.Parameters.Add(pa[0]);
OracleDataReader MyDataRead=MyDa.ExecuteReader();
while
(MyDataRead.Read())
{
arr1.Add(MyDataRead.GetInt32(0));
arr2.Add(MyDataRead.GetString(1));
}
arr3.Add(arr1);
arr3.Add(arr2);
return arr3;
}
catch(System.Data.SqlClient.SqlException er)
{
zydlogin mylog=new zydlogin();
throw mylog.GetException(er,er.Message);
}
finally
{
//myCommand.Dispose() ;
myCn.Close() ;
}
}
客户端:
public class listbox//将对象用listbox封装,以方便comboBox使用
{
private string myShortName ;
private string myLongName ;
public listbox(string strLongName, string strShortName)
{
this.myShortName = strShortName;
this.myLongName = strLongName;
}
public string DisplayMember
{
get
{
return myShortName;
}
}
public string ValueMember
{
get
{
return myLongName ;
}
}
}
public ArrayList Bin_Stock()
{
PublicConn new_Conn=new PublicConn();
object[] obj=new_Conn.Web_Base_Data.pro_stock_seek1();
object[] str1=(object[])obj[0];
object[] str2=(object[])obj[1];
ArrayList arr=new ArrayList();
for(int i=0;i<str1.Length;i++)
{
arr.Add(new listbox(str1[i].ToString(),str2[i].ToString()));
}
return arr;
}