2015-12-21 6 views
0

Когда я пытаюсь подключиться к DataBase, я получаю ошибку: ключевое слово не поддерживает: Host.Не удается подключиться к postrgres с помощью Visual Studio с 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 

enter image description here

+0

Почему вы не используете 'NpgsqlConnection' (или, может быть' OdbcConnection'?) Вместо 'SqlConnection'? Поставщик SQL Server имеет 'Data Source', а не' Host'. Также используйте инструкцию 'using' для удаления вашего соединения и команды automaticalliy вместо вызова метода« Закрыть »вручную. –

+0

Почему вы не используете [Npgsql] (http://www.npgsql.org/doc/)? Просто посмотрите на это [учебник] (http://www.codeproject.com/Articles/30989/Using- PostgreSQL-in-your-C-NET-application-An-intr) –

+0

@wingedpanther Спасибо, Connection работает, но я получаю этот результат «Значение для выходного параметра« @k »отсутствует в результате выполнения команды. Имя параметра: @k –

ответ

2

Я предполагаю, что вы используете dotconnect DevArt в для подключения ado.net поэтому вы должны импортировать Devart.Data.PostgreSql и использовать PgSqlConnection вместо sqlconnection и pgsqlcommand вместо sqlcommand

0

Как уже упоминалось уже, вам нужно использовать 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 

И не ставить действительное имя пользователя и пароль.