【问题标题】:Parameters issue with Insert Statement插入语句的参数问题
【发布时间】:2016-12-28 21:25:08
【问题描述】:

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

参数化查询 '(@UserID int, @date date, @BreakfastLevels 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

【问题讨论】:

  • 您将@UserID 声明为参数,但您从未为其提供值。 (您只提供了@Date 参数的值)
  • 那么我应该添加什么?抱歉,我还是编码新手。

标签: sql sql-server visual-studio


【解决方案1】:

按照Siyual 的建议为@UserID 参数指定一个值,方法与@Date 参数相同:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多