估计楼主应该是用了ORM,只知道定义泛型类,然后ORM自己就完成映射,具体怎么得到的数据,就不知道了.
所以,请退回到旧时代,用DataTable传递数据.
cmdText:这个是SQL查询语句;
connStr:这个是数据库连接字符串.
public static DataTable(string cmdText,string connStr)
{
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlDataAdapter da =new SqlDataAdapter(cmdText,conn);
DataTable dt =new DataTable();
da.Fill(dt);
conn.Close();
return dt;
}
所谓泛型List,其实就是 T[],所以,比如你有个class叫着 User:
User[] array = new User[dt.Rows.Count];
for(int i =0,j=dt.Rows.Count;i<j;i++)
{
User user = new User();
user.Id = dt.Rows[i]["ID"];
user.Name =dt.Rows[i]["Name"];
array[i]=user;
}
return array;
1:实体类的话,可以父类来返回值就可以!需要转换
2: 直接返回子类就可以
3:用数据集 (dataset ,datatable)
public static Datatable GetProjectByID(string ID)
DataTable吧。
//数据库访问层,有了DataTable,你可以绑定到Repeater,或者foreach datarow拼接字符串到asp.net页面都可以。
public DataTable SelectTestUserDt(string topStr,string filedStr,string whereStr,string orderStr)
{
string etcStr=(filedStr==""?"*":filedStr);
string strSql="Select "+topStr+etcStr+" From TestUser"+whereStr+orderStr;
OleDbParameter[] dic=new OleDbParameter[0];
return DbHelper.GetDt(strSql,dic);
}
DAL层:
/// <summary>
/// 按车次查询信息
/// </summary>
/// <param name="strScheduleCode">接受传递过来的车次号</param>
/// <returns>返回数据集</returns>
public DataTable SearchByCode(string strScheduleCode)
{
ScheduleDataSet sds;
try
{
SqlParameter[] parameters=new SqlParameter[1];
parameters[0]=new SqlParameter("@scheduleCode",SqlDbType.VarChar);
parameters[0].Value=strScheduleCode;
sds=new ScheduleDataSet();
SqlHelper.DataTableFillDataSet("SelectScheduleByCode",parameters,sds.T_Schedule);
}
catch(Exception ex)
{
throw ex;
}
return sds.T_Schedule;
}
在表示层就可以根据DataTable进行操作了,比如想找到某列数据:
foreach(DataRow row in table.Rows)
{
int id=Convert.ToInt32(row["id"]);
}
用arrayList也可以吧、03不支持泛型、那你就多写点代码转换一下、
不支持泛型就不用呗,就放在ArrayList里面,到时用的时候再拆箱不就可以了嘛!!