【问题标题】:How to connect WinForms DataGridView to PostgreSQL DB over network如何通过网络将 WinForms DataGridView 连接到 PostgreSQL DB
【发布时间】:2020-06-17 04:24:27
【问题描述】:

我正在尝试建立与 PostgreSQL 数据库的连接,作为 WinForms DataGridView 的数据源。

我不知道如何建立连接。

我正在为我的 DBMS 使用 DBeaver,并设置了一个包含一些简单数据的测试表。现在,我只是试图通过将版本发送到控制台来测试连接。服务器在网络上,主机是 IP 地址。

在 Form1_Load 我试过这个:

string strConnString = "Server=<ipaddress>;Port=5432;Username=<username>;Password=<password>;Database=test.cars";
NpgsqlConnection objConn = new NpgsqlConnection(strConnString);

try
{
    objConn.Open();
    string strSelectCmd = "select version()";
    var cmd = new NpgsqlCommand(strSelectCmd, objConn);
    var version = cmd.ExecuteScalar().ToString();
    Console.WriteLine($"PostgreSQL version: {version}");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message, "Error message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

但我在objConn.Open(); 行遇到异常。

消息框中的错误是“调用的目标已抛出异常”。

那么,我没有正确设置连接字符串吗?连接后,其余代码是否正确?

【问题讨论】:

  • 那一行的具体例外是什么?
  • @Dortimer,在底部附近查看我对我的问题的补充。
  • 嗯,如果你在catch块中设置断点,异常对象中是否有任何额外的细节?例如,内部异常或根异常对象上的消息?
  • “test.cars”。那应该是database.schema吗?我不确定你能做到这一点(我自己从来没有这样尝试过)。试一试。第二点,每当我遇到连接问题时,首先要做的事情之一就是使用 IP 地址和端口尝试 telnet。这保证了至少部分连接字符串是可以的。你检查过这个吗?
  • @Dortimer,我在 Open() 行有一个断点。当我进入 catch 行时,这将显示在“输出”窗格中:“抛出异常:mscorlib.dll 中的'System.Reflection.TargetInvocationException'”

标签: c# postgresql winforms connection-string npgsql


【解决方案1】:

事实证明,我需要在组策略编辑器中禁用 FIPS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多