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