asp.net将记录集作为关联数组返回

时间:2011-04-26 20:15:42

标签: c# asp.net data-retrieval

我正在尝试深入研究asp.net和C#并遇到一些问题;

我已经构建了一个访问db-data的类(不要问为什么,这是一个赋值)。

public static class dbConn {

  public static ArrayList dbGet(string odbcStr, string sql) {
    OdbcConnection DbConnection = new OdbcConnection(odbcStr);
    ...
    ArrayList rowList = new ArrayList();
    ...
    while (DbReader.Read())
    {
        object[] values = new object[DbReader.FieldCount];
        DbReader.GetValues(values);
        rowList.Add(values);
    }
    ....
    return rowList;

我猜没关系,我的问题是如何显示返回的数据; 在about.aspx.cs中:

void Page_Load(object sender, EventArgs e)
{
    ArrayList RS = new ArrayList();
    RS = dbConn.dbGet("DSN=mysqloverodbc", "select * from pages");
    Array RSrow = RS[0];
    sqlText.Text = RS[0]; 
    //what I want here is to request [0]["PageID"] or similar.

对.net的复杂性视而不见,我未能在google上获得帮助。

的问候, //吨

3 个答案:

答案 0 :(得分:1)

你几乎就在那里。这是你必须改变的。

Array RSrow = RS[0] as Array;
int pageIDIndex = 0; // Note :you have to know the column index in the table.i.e If the table has three columns, then the column index starts from 0 to columns length-1
sqlText.Text = RSrow.GetValue(pageIndexID).ToString();

答案 1 :(得分:0)

您是否尝试过使用[0]["PageID"]

由于sqlText.Text是一个数组,因此您对RS[0]的作业无效。

如果sqlText是TextBox:

,请尝试此操作
sqlText.Text = RS[0]["PageID"].ToString(); 

答案 2 :(得分:0)

C#本身不支持关联数组。

sqlText.Text = RS[0]["PageID"].ToString();的问题是RS [0]到达ArrayList的第一条记录,这是一个Object类型的数组 - object[]。但object[]没有带字符串的索引器 - 您无法为object[]数组的索引指定字符串值。

如果您不习惯使用对象数组,则必须使用项值的索引值。例如,

sqlText.Text = RS[0][0].ToString();   // Row 0, Column 0

第一个0指的是行,因为它是ArrayList的索引 第二个0引用该列,因为它是您在object[]行之后在该行上创建的while (DbReader.Read())的索引。

第二个索引将是DbReader返回的顺序中的列。