我正在尝试深入研究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上获得帮助。
的问候, //吨
答案 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
返回的顺序中的列。