Npgsql conn.Open()不起作用

时间:2015-10-19 22:26:14

标签: c# postgresql ssl connection-string npgsql

我必须远程连接数据库,即我使用计算机并连接某些计算机(使用远程桌面连接)。然后我尝试连接psql数据库,这是在另一台服务器上。我可以通过终端连接它(它工作),但我必须在我的C#脚本中使用它。 我读过我应该使用Npgsql.dll(我下载了Npgsql-2.2.3-net35)。 为了连接数据库我写道:

        string connstring = "Host=xxx.xx.xxx.xxx;Port=5432;Database=yy;"
               + "User=zz;Password=xxxxxx;CommandTimeout=20;Ssl=true;";

        NpgsqlConnection conn = new NpgsqlConnection (connstring);
        if (conn != null && conn.State == ConnectionState.Closed) 
        {
            Console.WriteLine ("Connection closed");
        }
        else 
        {
            Console.WriteLine ("Connection opened");
        };

        conn.Open();

        if (conn != null && conn.State == ConnectionState.Closed) 
        {
            Console.WriteLine ("Connection closed");
        }
        else 
        {
            Console.WriteLine ("Connection opened");
        };

当我尝试运行我的脚本时,它不起作用。在conn.Open()返回后,我没有收到任何错误,但没有任何错误。我想,这可能是连接字符串的问题,因为当我删除Ssl = true时,我收到FATAL:28000:没有主机的pg_hba.conf(这是我的远程计算机的IP),用户" zz&# 34;,数据库" yy",SSL关闭。

有谁可以帮助我解决我的问题?

2 个答案:

答案 0 :(得分:0)

我不知道它是否有用,但是总是用来与“Npgsql”建立连接的连接字符串如下:

string strConnString = "Server=" + odbc.Server + ";Port=" + odbc.Port + ";Timeout=1024;CommandTimeout=1024;UserId=" +
                                         odbc.UserName + ";Database=" + odbc.DataBase + ";Password=" + odbc.PassWord;

            NpgsqlConnection myConnection = new NpgsqlConnection(strConnString);

            myConnection.Open();

答案 1 :(得分:0)

添加到服务器pg_hba.conf文件,例如:

   # Type    database      users     addressIP     auth.method
   hostssl   yy            zz        <Your IP>     md5