5

我在 C# .NET 4.0 应用程序中使用 Npgsql 2.0.11.94 连接到 PostgreSql 数据库。我已经根据他们网站上的示例形成了连接字符串,当我使用 NpgsqlConnection 对象调用 connect 时,会抛出此异常:

A first chance exception of type 'Npgsql.NpgsqlException' occurred in Npgsql.dll

Additional information: ERROR: 22023: 3 is outside the valid range for parameter "extra_float_digits" (-15 .. 2)

抛出异常后代码将正确执行。也就是说,确实建立了与数据库的连接,并且查询返回了正确的数据。有谁知道它为什么抛出这个异常?这是我连接到数据库的代码:

string strConnection = "Server=192.168.253.20;Port=5432;User Id=alex;Password=asdf;Database=mydatabase;";
NpgsqlConnection conn = null;
try
{
    conn = new NpgsqlConnection(strConnection);
    conn.Open();
}
catch (Exception e)
{
}

任何帮助将非常感激。

谢谢,亚历克斯

4

3 回答 3

6

这是建立连接时初始设置的错误。

在第一次打开的每个连接上都会执行一些不同的命令(但在重新使用池连接时不会重复),这个命令试图处理浮点数格式允许的不同精度在不同版本的 PostgreSQL 之间。

很明显,事情并没有按计划进行。

快速查看源代码,似乎该调用已被包装并且应该吃掉任何此类异常,但也许那是在最后一个版本之后。如果是这样,那么从源代码构建可能会解决您的问题。

或者你可以返回一个版本,或者只是用 try-catch 包装,直到下一个版本。

于 2012-09-04T23:56:42.860 回答
5

Jon Hanna 正确地解释了为什么我们有这样的 try-catch 以及为什么会抛出异常。问题是 VS.net 会显示任何抛出的异常,即使是像 Npgsql 那样被 try-catch 异常处理吃掉的异常。

我认为 vs.net 的行为是正确的,向您表明尽管正在处理它们,但仍然有异常被抛出,并且在这种特定情况下,只是被忽略了。

您可以检查此异常是否仅在您使用 vs.net 调试代码时出现。此外,您还注意到,您的代码继续工作,就好像没有发生任何错误一样。所以,你不必担心这一点。

我希望它有所帮助。

于 2012-09-21T19:53:29.693 回答
0

我想您在管理 Visual Studio 项目时遇到了这个异常,因此请尝试在 MainMenu -> Debug -> Exceptions 中取消选中 Common Language Runtime Exceptions 和 Managed Debugging Assistans 列表。祝你好运!:))) 保罗

于 2013-01-23T11:58:35.107 回答