首页 新闻 会员 周边 捐助

VS2003传值

0
悬赏园豆:10 [已解决问题] 解决于 2013-03-13 14:47

我之前是从VS2008学起的 现在公司要用03的版本开发,我用三层来做项目,但它不支持泛型List。我想问下用什么方法可以将值从数据访问层传到用户界面层,最好给个实例;谢谢!!!

急救啊!!

小七灬的主页 小七灬 | 初学一级 | 园豆:102
提问于:2010-09-01 08:49
< >
分享
最佳答案
0

估计楼主应该是用了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;

收获园豆:10
Launcher | 高人七级 |园豆:45050 | 2010-09-01 09:00
恩 我只会用泛型的那种,你们都说用DataTable可以,能给个实例吗?我还只是个菜鸟。
小七灬 | 园豆:102 (初学一级) | 2010-09-01 09:02
@抱着树死劲摇:给你补充答案了.
Launcher | 园豆:45050 (高人七级) | 2010-09-01 09:11
你这个是传参吧,那个我会,我现在是想把查询到的数据返回到界面层。08的版本可以用泛型List传,03的我就不会了,能再完善些吗?谢谢!!
小七灬 | 园豆:102 (初学一级) | 2010-09-01 09:14
@抱着树死劲摇:所谓泛型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;
Launcher | 园豆:45050 (高人七级) | 2010-09-01 09:37
其他回答(6)
0

1:实体类的话,可以父类来返回值就可以!需要转换

2: 直接返回子类就可以 

3:用数据集 (dataset ,datatable)

  public static Datatable GetProjectByID(string ID)

无意创新 | 园豆:240 (菜鸟二级) | 2010-09-01 08:55
传参我会 但就是不会传值,比如我要把数据访问层里面查询到的某张表的数据传到界面层怎么传啊?
支持(0) 反对(0) 小七灬 | 园豆:102 (初学一级) | 2010-09-01 08:59
0

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);
}

Astar | 园豆:40805 (高人七级) | 2010-09-01 08:59
实例??
支持(0) 反对(0) 小七灬 | 园豆:102 (初学一级) | 2010-09-01 09:00
补充过了。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-09-01 09:02
谢谢!!!还是不太懂~~~ 我在研究研究
支持(0) 反对(0) 小七灬 | 园豆:102 (初学一级) | 2010-09-01 09:06
0

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"]);
}

kyo-yo | 园豆:5587 (大侠五级) | 2010-09-01 09:13
谢谢!!!
支持(0) 反对(0) 小七灬 | 园豆:102 (初学一级) | 2010-09-01 09:18
0

用arrayList也可以吧、03不支持泛型、那你就多写点代码转换一下、

Weber丶逸轩 | 园豆:233 (菜鸟二级) | 2010-09-01 09:22
可我还是个菜鸟,03的版本一点不熟,那个也不会写啊!
支持(0) 反对(0) 小七灬 | 园豆:102 (初学一级) | 2010-09-01 09:24
ArrayList list= new arrayList() list。add(你要放进去的对象或者属性); foreach (var item new list.Length/Count)具体是Length还是Count我忘记了、你自己点一下看看、var如果是对象你就写成对象类型 、如果是属性就写成属性的类型比如string; { 判断list中的值是否是你要保存的响应的对象类型或者属性类型、如果是的话、就list。add()然后返回list就可以了 }
支持(0) 反对(0) Weber丶逸轩 | 园豆:233 (菜鸟二级) | 2010-09-01 09:31
0

Galactica回复的,用基本的sql语句 返回DataTable和DataSet类型的不可以吗?

hovering | 园豆:38 (初学一级) | 2010-09-01 12:41
0

不支持泛型就不用呗,就放在ArrayList里面,到时用的时候再拆箱不就可以了嘛!!

Michelle 米雪儿 | 园豆:209 (菜鸟二级) | 2010-09-01 15:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册