Dav*_*bak 1 .net c# asp.net exception-handling arraylist
我试图从中提取价值,AraryList
但我不断得到的是System.Object[]
......
protected void Page_Load(object sender, EventArgs e)
{
ReadDb readClass = new ReadDb();
ArrayList list = new ArrayList();
list = readClass.ReadFromDb();
string s = list[4].ToString();
Response.Write(s);
}
Run Code Online (Sandbox Code Playgroud)
public class ReadDb
{
List<string> rowList = new List<string>();
public List<string> ReadFromDb()
{
Database db = new Database();
try
{
using(SqlConnection con = new SqlConnection(db.ConnectionString))
{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM Blog", con);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
object[] values = new object[reader.FieldCount];
reader.GetValues(values);
rowList.Add(values.ToString());
}
con.Close();
}
}
catch//(SqlException e)
{
}
return rowList;
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
And*_*bel 10
不要使用ArrayList
,请Array<string>
改用.在2.0之前的.NET中,没有泛型,也没有办法制作类型安全的集合.ArrayList
是.NET 1.X次的原始集合之一.
编写新代码时,请始终使用类型安全通用集合.Array<string>
(简称写成string[]
)就是这样一种类型.
问题出在代码的这一部分:
object[] values = new object[reader.FieldCount];
reader.GetValues(values);
rowList.Add(values.ToString());
Run Code Online (Sandbox Code Playgroud)
values
是一个对象数组.该ToString()
方法object[]
不返回数组中对象的内容,只返回该类型的名称.您必须将调用更改values.ToString()
为将检索到的行的值格式化为字符串的内容.例如:
rowList.Add(string.Format("Name: {0}, Address: {1}", values[0], values[1]);
Run Code Online (Sandbox Code Playgroud)