![](/img/trans.png)
[英]Npgsql.PostgresException (0x80004005): 42883: operator does not exist: jsonb #> text
[英]PostgresException: 42883: operator does not exist: @ character varying
我正在嘗試在 razor 頁 c# 中進行預訂頁面。如果我進行預訂,它也會出現在用戶的頁面上。 我在每個預訂旁邊都做了一個按鈕,這樣你就可以刪除預訂。 預訂在頁面上僅顯示日期和位置。 當我嘗試從頁面中刪除它時出現此錯誤:PostgresException: 42883: operator does not exist: @ character varying 並且不知道為什么。 這是 c# 端:
public void OnPostRemove(ReservationModel reservation)
{
DateTime convdayid = Convert.ToDateTime(reservation.Dayid);
DeleteReservation(convdayid, reservation.Locationid);
}
public void DeleteReservation(DateTime convdayid, string Locationid)
{
var cs = Database.Database.Connector();
using var con = new NpgsqlConnection(cs);
con.Open();
var sql = "DELETE FROM reservation WHERE locationid = @Locationid AND dayid = @convdayid;";
using var cmd = new NpgsqlCommand(sql, con);
cmd.Parameters.AddWithValue("locationnid", Locationid);
cmd.Parameters.AddWithValue("dayid", convdayid);
cmd.Prepare();
cmd.ExecuteNonQuery();
}
如果需要,這是 html 端
@foreach(var reservations in @Model.ShowReservation())
{
<form method="post">
<fieldset>
<div class="form-group">
<tr>
<img class="img-fluid" src="/Images/Reservation.png"/>
<td>
@Html.DisplayFor(m => reservations.Dayid)
<input type="hidden" name="Dayid" value="@Html.DisplayFor(m => reservations.Dayid)"/>
</td>
<td>
@Html.DisplayFor(m => reservations.Locationid)
<input type="hidden" name="Locationid" value="@Html.DisplayFor(m => reservations.Locationid)"/>
</td>
</tr>
<button type="submit" value="Submit" asp-page-handler="Remove" class="btn btn-dark btn-sm">X</button>
</div>
</fieldset>
</form>
<hr>
}
<hr>
編輯:
錯誤得到解決,但由於某種原因,特定行沒有從數據庫中刪除。 什么都沒發生。 這就是我對代碼所做的更改。
public void OnPostRemove(ReservationModel reservation)
{
DateTime convdayid = Convert.ToDateTime(reservation.Dayid);
DeleteReservation(convdayid, reservation.Locationid);
}
public void DeleteReservation(DateTime convdayid, string Locationid)
{
var cs = Database.Database.Connector();
using var con = new NpgsqlConnection(cs);
con.Open();
var sql = "DELETE FROM reservation WHERE locationid = @locationid AND dayid = @dayid;";
using var cmd = new NpgsqlCommand(sql, con);
cmd.Parameters.AddWithValue("locationid", Locationid);
cmd.Parameters.AddWithValue("dayid", convdayid);
cmd.Prepare();
cmd.ExecuteNonQuery();
}
它試圖將“@”解析為“=@”
DELETE FROM reservation WHERE locationid = @Locationid AND dayid = @convdayid;
字面意思是傳遞給 Db。 您需要構建該字符串,以便相應地填充 @LocationID 和 @convdaid。 就像是:
DELETE FROM reservation WHERE locationid = 34 AND dayid = 55;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.