2011-03-15 59 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()); 
}