如果故意插入重复的主键,如何在NPGSQL中执行ExecuteNonQuery时返回错误或引发异常。执行时,它只是冻结,没有任何反应。我尝试用Try Catch包围代码,但它仍然在ExecuteNonQuery中冻结。
PS。不能使用AutoIncrement列。
编辑:
try
{
command = new NpgsqlCommand(strQuery, conn);
if (command.ExecuteNonQuery() > 0)
return true;
else
return false;
}
catch(Exception ex)
{
return false;
}
其中strQuery是命令文本。例如。我的表已经有主键值1.然后我会故意插入另一个1作为主键。你如何提出异常?
返回值为false时。我会抛出例外。但它在ExecuteNonQuery中冻结。
答案 0 :(得分:1)
Npgsql使用PostgreSQL error 23505正确抛出PostgresException(重复的键值违反了唯一约束),这里有一些显示它的代码:
for username in usernames{
if username.value == "Sean"{
// do whatever you want here
}
}
您的代码中可能存在问题。如果您仍然认为存在问题,请提交一个完整示例,包括您正在使用的Npgsql版本以及显示该问题的完整,可运行的控制台程序(就像我在上面的片段中所做的那样)。 p>