Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为vb.net中的命令“”提供的参数不足_Vb.net_Sqlite - Fatal编程技术网

为vb.net中的命令“”提供的参数不足

为vb.net中的命令“”提供的参数不足,vb.net,sqlite,Vb.net,Sqlite,我正在尝试执行一个SQL查询,从数据库中计算两个日期之间的天数。 但是,当我尝试从数据库中搜索特定数据时,会发生错误。此外,有人知道我如何使用sql查询计算两个日期之间的天数,这将使用另一个表中的数据。我有一个房间类型表,其中有一个房间价格栏,还有一个预订表,其中有到达日期和离开日期。我如何计算预订的总价 System.Data.SQLite.SQLiteException:'未知错误 为命令“”提供的参数不足 这是我到目前为止所拥有的 Function GetDuration(ID As

我正在尝试执行一个SQL查询,从数据库中计算两个日期之间的天数。 但是,当我尝试从数据库中搜索特定数据时,会发生错误。此外,有人知道我如何使用sql查询计算两个日期之间的天数,这将使用另一个表中的数据。我有一个房间类型表,其中有一个房间价格栏,还有一个预订表,其中有到达日期和离开日期。我如何计算预订的总价

System.Data.SQLite.SQLiteException:'未知错误 为命令“”提供的参数不足

这是我到目前为止所拥有的

   Function GetDuration(ID As Integer, fname As String)
    Dim dsql As String = "Select Cast ((
                        JulianDay(Replace(departuredate,'/','-')) 
                        - JulianDay(Replace(arrivaldate,'/','-'))
                        ) As Integer)
                        from booking INNER JOIN customers on customers.CustomerID = booking.BookingID
                        where booking.bookingid = @ID or customers.fname LIKE @Fname;"
    Using con As New SQLiteConnection(ConStr)
        Dim mycmd As New SQLiteCommand(dsql, con)
        con.Open()
        cmd.Parameters.Add("@Fname", DbType.String).Value = $"%{fname}%"
        cmd.Parameters.Add("@ID", DbType.Int32).Value = ID
        Dim value As Object = mycmd.ExecuteScalar()
        txtdurationofstay = value
    End Using

End Function
    Private Sub IbtnSearch_Click(sender As Object, e As EventArgs) Handles ibtnBSearch.Click
    If txtBookingSearchID.Text <> "" Then
        Dim SearchID As Integer
        If Int32.TryParse(txtBookingSearchID.Text, SearchID) Then
            DgvBookings.DataSource = GetData("null", SearchID)
            GetDuration(txtBookingSearchID.Text, "null")

        Else
            MessageBox.Show("Please enter a valid number in the Search box.")
        End If

    ElseIf txtBsearchFname.Text <> "" Then
        DgvBookings.DataSource = GetData(txtBsearchFname.Text, 0)
        GetDuration(0, txtBsearchFname.Text)
    End If



End Sub
您在此处定义了mycmd:

但将参数添加到cmd而不是mycmd:

然后你执行:

mycmd.ExecuteScalar()

但是mycmd中没有参数。

你知道我怎样才能做到第二个问题中的要求吗?@MiloszLaksa现在我读到了。这可以通过相关表的联接和计算乘法来实现,但我不能说没有所有表格的样本数据和预期结果。我应该在这里发布一些样本数据,还是提出一个全新的问题?@MiloszLaksa最好发布一个新问题,在这里您可以用样本数据和预期结果解释需求。
cmd.Parameters.Add("@Fname", DbType.String).Value = $"%{fname}%"
cmd.Parameters.Add("@ID", DbType.Int32).Value = ID
mycmd.ExecuteScalar()