0

我有一张名为 students 的桌子,里面最多可以容纳 4 名学生。字段称为 Student1、Student2、Student3、Student4。

我遇到的问题是我不知道要插入多少学生 - 这完全取决于数组中有多少称为“学生”

这是我的插入语句

INSERT INTO [Group] (Student1, Student2, Student3, Student4, projectdifficulty) 
VALUES(" & Convert.ToInt32(students(0)) & ", " & Convert.ToInt32(students(1)) & "," 
& Convert.ToInt32(students(2)) & ", " & Convert.ToInt32(students(3)) & ", 'complex')"

有时,没有学生(3),因此在插入时会引发错误。我怎样才能解决这个问题?我必须在 VB 中使用 if 语句吗?

谢谢。

4

1 回答 1

1

首先,您应该使用参数来避免数据类型和注入问题。其次,使用 iif 语句。这只是您可以处理此问题的众多方法之一。这假设您希望空数组值为零。您需要进行更改以满足您的需求

Using CN As New SqlClient.SqlConnection("Your connection String")
    Using CMD As New SqlClient.SqlCommand("INSERT INTO [Group] (Student1, Student2, Student3, Student4, projectdifficulty) " & _
            "VALUES(@P1, @P2,@P3,@P4, 'complex')", CN)

        CMD.Parameters.AddWithValue("@P1", IIf(students.length > 0, Convert.ToInt32(students(0)), 0))
        CMD.Parameters.AddWithValue("@P2", IIf(students.length > 1, Convert.ToInt32(students(1)), 0))
        CMD.Parameters.AddWithValue("@P3", IIf(students.length > 2, Convert.ToInt32(students(2)), 0))
        CMD.Parameters.AddWithValue("@P4", IIf(students.length > 3, Convert.ToInt32(students(3)), 0))

        CN.Open()
        CMD.ExecuteNonQuery()
        CN.Close()
    End Using
End Using
于 2013-10-22T14:27:42.207 回答