无法使用 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
而不是 sqlconnection
和 pgsqlcommand
而不是 sqlcommand
当我尝试连接到数据库时,出现错误:关键字不支持:主机。
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
而不是 sqlconnection
和 pgsqlcommand
而不是 sqlcommand