-6

当表单加载时,我希望学生表中的所有 ID 都插入另一个表中。但是当我运行程序 ID 时,表中只有 1 个 ID 插入,但是当要插入 2 个 ID 时,它会给出以下错误:

指数超出范围。必须是非负数且小于集合的大小。

所以任何人都可以帮助我

List<string> files = new List<string>();

query =  " select student_no from student_registration";

cmd = new SqlCommand(query, con);

con.Open();

dr = cmd.ExecuteReader();

while (dr.Read())
{
   files.Add(dr[0].ToString());
}

con.Close();

for (int i = 1; i <= files.Count; i++)
{
    query = "insert into student_fees values(" + files[i] + ",'0','0')";

    cmd = new SqlCommand(query, con);

    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}
4

1 回答 1

2
for (int i = 1; i <= files.Count; i++)

一定是

for (int i = 0; i < files.Count; i++)

对其进行改进,您可以使用 foreach 循环:

foreach (string file in files)
{
    query = "insert into student_fees values(" + file + ",'0','0')";

当我们在做的时候,研究你的陈述的参数绑定。想象一下,如果在您的列表中,一个元素是

"X,'0','0'); DROP DATABASE; --"
于 2013-10-30T15:31:16.847 回答