读书人

一个关于ArrayList的有关问题

发布时间: 2012-03-15 11:50:38 作者: rapoo

一个关于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;
}

读书人网 >C#

热点推荐