asp.net возвращает набор записей как связанный массив - PullRequest
0 голосов
/ 27 апреля 2011

Я пытаюсь покопаться в asp.net и C # и у меня возникают некоторые проблемы;

Я создал класс для доступа к db-данным (не спрашивайте, почему, это назначение).

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.

С уважением, // t

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Ты почти там.Вот что вы должны изменить.

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();
0 голосов
/ 27 апреля 2011

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.

0 голосов
/ 27 апреля 2011

Вы пробовали использовать [0]["PageID"]?

Ваше присвоение sqlText.Text не будет работать, поскольку RS[0] является массивом.

Попробуйте, если sqlText является TextBox:

sqlText.Text = RS[0]["PageID"].ToString(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...