[英]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.