插入语句的参数问题

时间:2016-12-28 21:25:09

标签: sql sql-server visual-studio

我从Try catch收到此错误消息:

  

参数化查询'(@ UserID int,@ date date,@ RackfastLevels float,@ LunchLevels floa'需要参数'@UserID',未提供

代码旨在从表单中获取放入数据网格视图的值,并将它们插入到数据库中的表中,但是我收到上面的错误消息。我还是很擅长编码,在这里真的需要帮助。

这是我的代码:

 Private Sub UpdateButton_Click(sender As Object, e As EventArgs) Handles UpdateButton.Click
        Dim con As New SqlConnection(My.Settings.DiabetesServerConStr)

        Dim insertNewValues As New SqlCommand()
        insertNewValues.Connection = con

        insertNewValues.Parameters.Add("@UserID", SqlDbType.Int)
        insertNewValues.Parameters.Add("@Date", SqlDbType.Date).Value = Date.Today()
        insertNewValues.Parameters.Add("@BreakfastLevels", SqlDbType.Float)
        insertNewValues.Parameters.Add("@LunchLevels", SqlDbType.Float)
        insertNewValues.Parameters.Add("@DinnerLevels", SqlDbType.Float)
        insertNewValues.Parameters.Add("@BedLevels", SqlDbType.Float)
        insertNewValues.Parameters.Add("@BreakfastCarbs", SqlDbType.Float)
        insertNewValues.Parameters.Add("@LunchCarbs", SqlDbType.Float)
        insertNewValues.Parameters.Add("@DinnerCarbs", SqlDbType.Float)
        insertNewValues.Parameters.Add("@BreakfastInsulin", SqlDbType.Float)
        insertNewValues.Parameters.Add("@LunchInsulin", SqlDbType.Float)
        insertNewValues.Parameters.Add("@DinnerInsulin", SqlDbType.float)

        Dim parcomstr As String = "INSERT INTO BloodSugarDiary (UserID, Date, BreakfastLevels, LunchLevels, DinnerLevels, BedLevels, BreakfastCarbs, LunchCarbs, DinnerCarbs, BreakfastInsulin, LunchInsulin, DinnerInsulin)VALUES (@UserID, @Date, @BreakfastLevels, @LunchLevels, @DinnerLevels, @BedLevels, @BreakfastCarbs, @LunchCarbs, @DinnerCarbs, @BreakfastInsulin, @LunchInsulin, @DinnerInsulin)"
        insertNewValues.CommandText = parcomstr

        Try
            con.Open()
            insertNewValues.ExecuteNonQuery()
            con.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        con.Dispose()
    End Sub

1 个答案:

答案 0 :(得分:0)

Siyual建议指定@UserID参数的值,与@Date参数已有的相同:

insertNewValues.Parameters.Add("@UserID", SqlDbType.Int).Value = 1

1替换为您想要的任何静态值,或将包含您希望插入的相关值的变量替换为BloodSugarDiary.UserID。您可能希望以相同的方式为其他参数指定值,除非您不想为这些列插入值。