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)
| 归档时间: |
|
| 查看次数: |
1673 次 |
| 最近记录: |