我知道我的问题似乎很笼统和基本,但我似乎找不到问题。当VS开始在整数值“ i”的声明中调试我的代码时,将弹出此错误:
所以我试图在循环之前声明,但仍然存在相同的错误。之后,我更改了变量的类型,但没有更改。但是,当我在“ masaQuery = ...”部分之间声明它时,它开始在for循环的assigment部分引发错误。因此,我对其进行了更改,可以进行欺骗,但结果仍然相同:
该代码的第一个版本:
string[] masaQuery = new string[8];
masaQuery[0] = uyelik;
masaQuery[1] = ucretler;
masaQuery[2] = masalar;
masaQuery[3] = masaHareket;
masaQuery[4] = log;
masaQuery[5] = genelAyarlar;
masaQuery[6] = adisyon;
masaQuery[7] = direktAdisyon;
masaQuery[8] = bekleyenListesi;
masaQuery[9] = borclular;
for (int i = 0; i < masaQuery.Length; i++)
{
using (SQLiteConnection c = new SQLiteConnection(connStr))
{
c.Open();
using (SQLiteCommand cmd = new SQLiteCommand(masaQuery[i], c))
{
cmd.ExecuteNonQuery();
}
}
}
代码的最新版本:
string[] masaQuery = new string[9];
masaQuery[0] = uyelik;
masaQuery[1] = ucretler;
masaQuery[2] = masalar;
masaQuery[3] = masaHareket;
masaQuery[4] = log;
int i = 0;
masaQuery[5] = genelAyarlar;
masaQuery[6] = adisyon;
masaQuery[7] = direktAdisyon;
masaQuery[8] = bekleyenListesi;
masaQuery[9] = borclular;
for (; i < masaQuery.Length; i++)
{
var query = masaQuery[i];
using (SQLiteConnection c = new SQLiteConnection(connStr))
{
c.Open();
using (SQLiteCommand cmd = new SQLiteCommand(query, c))
{
cmd.ExecuteNonQuery();
}
}
}
等待您的答案。
答案 0 :(得分:3)
这应该可以解决问题:
string[] masaQuery = new string[10];
您有10个元素,但是您只创建了一个可容纳9个元素的字符串数组。
答案 1 :(得分:1)
来自array documentation in MSDN:
- 数组的索引为零:具有
n
个元素的数组的索引从0
到n-1
。
当您声明一个n
= 9的数组时,实际上是从0
分配给8
的数组索引,而当您使用第9个索引时,将抛出IndexOutOfBoundsException
因为该索引不存在。
不是使用n
= 9,而是使用n
= 10:
string[] masaQuery = new string[10];