當故意插入重復的主鍵時,如何在 NPGSQL 中執行 ExecuteNonQuery 時返回錯誤或引發異常。執行后,它只是凍結,什么也沒有發生。我試過用 Try Catch 圍繞代碼,但它仍然在 ExecuteNonQuery 中凍結。附注。不能使用 AutoIncrement 列。編輯: try { command = new NpgsqlCommand(strQuery, conn); if (command.ExecuteNonQuery() > 0) return true; else return false; } catch(Exception ex) { return false; }其中 strQuery 是命令文本。EG 我的表已經有主鍵值1了,那我特意再插入一個1作為主鍵。你如何引發異常?當返回值為 false 時。我會拋出異常。但它在 ExecuteNonQuery 中凍結。
1 回答

浮云間
TA貢獻1829條經驗 獲得超4個贊
Npgsql 正確拋出 PostgresException 與PostgreSQL 錯誤 23505(重復鍵值違反唯一約束),下面是一些顯示它的代碼:
using (var conn = OpenConnection())
{
using (var cmd = new NpgsqlCommand("CREATE TABLE foo (id INT PRIMARY KEY)", conn))
cmd.ExecuteNonQuery();
using (var cmd = new NpgsqlCommand("INSERT INTO foo (id) VALUES (1)", conn))
cmd.ExecuteNonQuery();
using (var cmd = new NpgsqlCommand("INSERT INTO foo (id) VALUES (1)", conn))
cmd.ExecuteNonQuery();
}
問題很可能出在您的代碼中。如果您仍然認為存在問題,請提交完整示例,包括您使用的 Npgsql 版本以及顯示問題的完整、可運行的控制臺程序(就像我在上面的片段中所做的那樣)。
- 1 回答
- 0 關注
- 314 瀏覽
添加回答
舉報
0/150
提交
取消