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