2013-10-30 68 views
-5

當表單加載時,我希望Student表中的所有ID都插入到另一個表中。 但是當我運行程序ID只有1 ID插入表,但是當2號將是 插入它給人的錯誤:索引綁定錯誤

指數超出範圍。必須是非負數且小於集合的大小。

所以任何人都可以幫我

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(); 
} 
+5

你不必大喊! – mortaga

+0

讓'student_fees'的其他兩個字段的默認值爲'0',然後執行'「INSERT INTO student_fees(TheFieldName)SELECT student_no FROM student_registration」' - 「TheFieldName」當然應該是字段的字段名稱在'student_fees'表中,你想把'student_no'的值放在裏面。 – Corak

回答

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; --" 
+0

你很多foreach循環正在工作 –