我在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;
}
答案 0 :(得分:6)
string[] SingleRow = new string[] { };
正在创建一个长度为0
这样做:
string[] SingleRow = new string[i];
(您必须将其移至初始化i
)
即:
int i = data.FieldCount;
string[] SingleRow = new string[i];
提示:只有在想要收集集合时才使用{}
:
e.g。 new string[]{"abc", "def"};
答案 1 :(得分:1)
这解决了问题,感谢@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();
}