繁体   English   中英

为什么总是显示错误索引超出数组范围?

[英]Why it always shows the error index is out of array bounds?

我正在用C#编写应用程序,这是一个使我停下来的问题。 我的数据库表有7列,运行应用程序时需要7列。 但在这一行中, SingleRow[c] = data[0].ToString(); 它显示了一个错误,告诉我索引超出了数组的范围。 请提出建议。 我的代码如下。

public string[] RowOnly()
{
    string[] SingleRow = new string[] { };
    conn = new OleDbConnection(connStr);
    conn.Open();
    cmd = new OleDbCommand(query, conn);
    data = cmd.ExecuteReader();
    MessageBox.Show(data.HasRows.ToString());
    int i = data.FieldCount;
    while (data.Read())
    {
        for (int c = 0; c < i; c++)
        {
            SingleRow[c] = data[0].ToString();
        }                           
    }
    conn.Close();
    return SingleRow;      
}
string[] SingleRow = new string[] { };

正在创建长度为0的数组

做这个:

string[] SingleRow = new string[i];

(您必须将其移动到初始化i的行之后)

即:

int i = data.FieldCount;
string[] SingleRow = new string[i];

提示:仅在要初始化集合时才使用{}

例如new string[]{"abc", "def"};

这解决了问题,谢谢@Maximilian Ast

 public string[] RowOnly()
    {

        conn = new OleDbConnection(connStr);
        conn.Open();
        cmd = new OleDbCommand(query, conn);
        data = cmd.ExecuteReader();
        MessageBox.Show(data.HasRows.ToString());
        int i = data.FieldCount;
        List<string> SingleRow = new List<string>();
       while (data.Read())
        {
            for (int c = 0; c < i; c++)
            {
                SingleRow.Add(data[c].ToString());
            }

        }
        conn.Close();
        return SingleRow.ToArray();

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM