为什么它总是显示错误索引超出数组范围
本文关键字:数组 范围 索引 错误 显示 为什么 | 更新日期: 2023-09-27 18:00:42
我正在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();
}