0

私は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 で助けを得ることができませんでした。

よろしく、//t

4

3 に答える 3

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();
于 2011-04-26T21:19:33.463 に答える
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

1 つ目0は へのインデックスであるため、行を参照しArrayListます。
2 番目は、行の次の行に作成した0へのインデックスであるため、列を参照します。object[]while (DbReader.Read())

2 番目のインデックスは、 によって返される順序の列になりますDbReader

于 2011-04-26T21:37:15.403 に答える
0

使ってみました[0]["PageID"]か?

は配列であるため、への割り当てsqlText.Textは機能しません。RS[0]

sqlText が TextBox の場合は、これを試してください。

sqlText.Text = RS[0]["PageID"].ToString(); 
于 2011-04-26T20:22:57.473 に答える