无法使用 Visual Studio 和 dotConnect 连接到 postgres

Can't connect to postrgres using Visual Studio with dotConnect

当我尝试连接到数据库时,出现错误:关键字不支持:主机。

        int x = Int32.Parse(textBox1.Text);
        try
        {

            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
            con.ConnectionString =
           Properties.Settings.Default.postgresConnectionString;
            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "getCount";
            System.Data.SqlClient.SqlParameter param = new System.Data.SqlClient.SqlParameter("@k",
           SqlDbType.Int);
            param.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(param);
            cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Tovar", x));
            con.Open();
            cmd.ExecuteNonQuery();
            string kolvo = cmd.Parameters["@k"].Value.ToString();
            con.Close();
            label1.Text = kolvo + " израсходован в количестве ";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

连接字符串:

User Id=postgres;Password=8loz9fnl;Host=localhost;Database=postgres;Persist Security Info=True

正如其他人已经提到的,您需要使用 Npgsql。还可以使用导入来简化您的代码。示例连接代码: 导入程序集 using Npgsql; 然后获取连接并打开它

using (var  conn = new NpgsqlConnection(Properties.Settings.Default.postgresConnectionString)) 
{ 
    // you other code here
}

这样你的资源就会自动管理,你不需要调用关闭方法,你还需要像@wingedpanther 提到的那样更改命令类型。阅读好的教程或提到的文档会有很大帮助。 您还需要将连接字符串修复为:

Server=localhost;User Id=postgres;Password=8loz9fnl;Database=postgres;Persist Security Info=True

并避免输入您的实际用户名和密码。

我猜您正在使用 devart 的 dotconnect 进行 ado.net 连接,因此您应该导入 Devart.Data.PostgreSql 并使用 PgSqlConnection 而不是 sqlconnectionpgsqlcommand而不是 sqlcommand