亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PostgreSql NPGSL 重復主鍵

PostgreSql NPGSL 重復主鍵

C#
繁花不似錦 2021-06-12 15:06:12
當故意插入重復的主鍵時,如何在 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 版本以及顯示問題的完整、可運行的控制臺程序(就像我在上面的片段中所做的那樣)。


查看完整回答
反對 回復 2021-06-27
  • 1 回答
  • 0 關注
  • 314 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號