2011-03-15 42 views
0

我有如何从数据读取器从DataReader

string queryDTL = " SELECT * FROM tbl1 ";     

connection.Connect(); 
cmd = new OracleCommand(queryDTL, connection.getConnection()); 
dr_DTL = qcmd2.ExecuteReader(); 

ArrayList RecordsInfo = new ArrayList(); 
while (dr_DTL.Read()) 
{ 
    RecordsInfo = dr_DTL["number"].ToString(); 
} 

问题是DataReader的包含了很多的数量比其他信息的填写一个数组列表的问题填写一个ArrayList,但我不知道如何把他们放在正确的位置。

如果这听起来很愚蠢,我还是一个初学者。

+2

你为什么要使用'ArrayList'而不是'List '的任何原因?如果您还有其他感兴趣的内容,您希望如何存储这些数据? – 2011-03-15 12:49:20

回答

0

我认为你将与一个DataTable和适配器更好:

SqlConnection Conn = new SqlConnection(MyConnectionString); 
    Conn.Open(); 

    SqlDataAdapter Adapter = new SqlDataAdapter("Select * from Employees", Conn); 

    DataTable Employees = new DataTable(); 

    Adapter.Fill(Employees); 

    GridView1.DataSource = Employees; 
    GridView1.DataBind(); 

当然,在你的情况下,使用对象的Oracle版本。

0

嗨,你所要做的RecordInfo.Add,当前正在重新分配整个数组列表...

此外,如果您检索太多列,只查询你的情况number,不能简单地SELECT *您需要的列。 ..

+0

string queryDTL =“SELECT number,name,phone FROM tbl1”; connection.Connect(); cmd = new OracleCommand(queryDTL,connection.getConnection()); dr_DTL = qcmd2.ExecuteReader(); ArrayList RecordsInfo = new ArrayList(); (); RecordsInfo = dr_DTL [“name”]。toString(); RecordsInfo = dr_DTL [“phone”]。ToString();(dr_DTL.Read()) RecordsInfo = dr_DTL [“number”]。 ; }你是不是这个意思?它仍然无法正常工作 – wandos 2011-03-15 12:55:55

2

您不能将String放入ArrayList。您必须将该字符串添加到列表中。例如, :

ArrayList RecordsInfo = new ArrayList(); 
while (dr_DTL.Read()) 
{ 
     RecordsInfo.Add(dr_DTL["number"].ToString()); 
}  

如果你想要最好的方法是使用List<String>字符串列表。例如, :

List<String> RecordsInfo = new List<String>(); 
while (dr_DTL.Read()) 
{  
    RecordsInfo.Add(dr_DTL["number"].ToString()); 
}