将动态学生数插入表中

时间:2013-10-22 01:38:38

标签: sql vb.net

我有一张叫做学生的桌子,里面最多可以有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语句?

感谢。

1 个答案:

答案 0 :(得分: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