【问题标题】:insert dynamic number of students into a table将动态数量的学生插入表中
【发布时间】:2013-10-22 22:27:42
【问题描述】:

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

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

这是我的插入语句

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 语句吗?

谢谢。

【问题讨论】:

  • 错误的表结构
  • 您遇到的任何错误都应作为问题的一部分发布。
  • 我得到的错误是“索引超出了数组的范围”这是因为我试图插入不存在的学生(3)......如果它不存在t 存在,我只是希望它插入一个空整数。
  • 只是学生(3)不存在还是学生(2),学生(1)等。总之你会有少于3个三个学生
  • 可以有1-4个学生...如果有,Student1需要从students(0)填充,其余的需要为null...

标签: sql vb.net


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多