-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-loop を使用できます。

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

その間に、ステートメントのパラメーター バインディングを調査します。リスト内の1つの要素が

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