【发布时间】: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