当故意插入重复的主键时,如何在 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 关注
- 280 浏览
添加回答
举报
0/150
提交
取消