一个关于ArrayList的问题,高手进
public   Lword[]   ListWord() 
 	{  			 
 	//返回一个Lword[]类型 
 	Lword   lword=new   Lword(); 
 	ArrayList   lwordList=new   ArrayList();//数组用来存放信息   
 string   sql= "select   content,posttime,postman   from   word   order   by   id "; 
 	using(SqlConnection   conn=new   SqlConnection(connstr)) 
                      { 
 		SqlCommand   cmd=new   SqlCommand(sql,conn); 
 		try 
 		{ 
 		conn.Open(); 
 		SqlDataReader   reader=cmd.ExecuteReader();// 
 		while(reader.Read()) 
 		{ 
 				                        lword.PostTime=(DateTime)reader[ "posttime "]; 
 						lword.Content=(string)reader[ "content "]; 
 						lword.PostMan=(string)reader[ "postman "]; 
 						lwordList.Add(lword); 
 					} 
 				} 
 			catch 
 			{ 
 				throw; 
 			}  				 
 			} 
 			Lword[]   word=(Lword[])lwordList.ToArray(typeof(Lword));//word.length=5 
 			return   word; 
 		}   
    this.datalist.datasource=ListWord(); 
    this.datalist.databinde(); 
 ------- 
 数据库中共有5条记录,结果返回的5条记录都是数据库中最后一条,调试的时候,5条不同的纪录也都加到了lwordList中了 
 --提示:Lword.cs是个实体,罗列了数据库的几个字段属性。
------解决方案--------------------Lword lword; 
 List <Lword>  mylist = new List <Lword> (); 
 ………… 
 while(reader.Read()) 
 { 
    lword = new Lword(); 
     ………… 
    mylist.Add(lword); 
 } 
 ……
------解决方案--------------------你的lword是个对象的引用,每次赋值都会修改刚才的值,你可以这样   
 注意加的注释   
 public Lword[] ListWord() 
 	{  			 
 	//返回一个Lword[]类型 
 	Lword lword; //这里不要实例化 
 	ArrayList lwordList=new ArrayList();//数组用来存放信息   
 string sql= "select content,posttime,postman from word order by id "; 
 	using(SqlConnection conn=new SqlConnection(connstr)) 
        { 
 		SqlCommand cmd=new SqlCommand(sql,conn); 
 		try 
 		{ 
 		conn.Open(); 
 		SqlDataReader reader=cmd.ExecuteReader();// 
 		while(reader.Read()) 
 		{ 
 			lword=new Lword(); //这里再实例化 
 				        lword.PostTime=(DateTime)reader[ "posttime "]; 
 						lword.Content=(string)reader[ "content "]; 
 						lword.PostMan=(string)reader[ "postman "]; 
 						lwordList.Add(lword); 
 					} 
 				} 
 			catch 
 			{ 
 				throw; 
 			}  				 
 			} 
 			Lword[] word=(Lword[])lwordList.ToArray(typeof(Lword));//word.length=5 
 			return word; 
 		}   
  this.datalist.datasource=ListWord(); 
  this.datalist.databinde();
------解决方案--------------------把这个声明在循环里面 
 Lword lword=new Lword();
------解决方案--------------------lword=new Lword(); 
 放到 
 while(reader.Read()) 
 { 
 lword=new Lword(); 
 …… 
 }
------解决方案--------------------将lword申明为循环的局部变量 
 try 
 { 
 	conn.Open(); 
 	SqlDataReader reader=cmd.ExecuteReader();// 
 	while(reader.Read()) 
 	{ 
 		Lword lword=new Lword(); 
 		lword.PostTime=(DateTime)reader[ "posttime "]; 
 		lword.Content=(string)reader[ "content "]; 
 		lword.PostMan=(string)reader[ "postman "]; 
 		lwordList.Add(lword); 
 	} 
 } 
 catch 
 { 
 	throw; 
 }