Не удается найти базу данных postgres через С# с помощью поставщика Ole Db

Я пытаюсь получить доступ к некоторым базам данных postgresSQL, настроенным на настроенном нами Linux-сервере, ранее мы использовали доступ и SQL-сервер 2008 и прекрасно подключались к C# Ole Db, но мы пытаемся проверить, мы можем перейти на postgres, так как это будет удобнее. Я могу получить доступ к этим базам данных на Linux-машине совершенно нормально, используя ODBC Data Source Administrator, который успешно проверяет соединение с базой данных, PG Admin III, который отлично показывает все базы данных, а также psql может отлично обращаться к этим базам данных. Однако, когда я пытаюсь подключиться с помощью Ole DB через Visual Studio, строка подключения выглядит примерно так:

"Provider=PostgresSQL OLE DB Provider;Server=192.168.0.64:5432;location=FRANK;User ID=ourusername;password=ourpassword;timeout=1000;"

Я получил это от connectionstrings.com, и они никогда не подводили меня раньше. Я пробовал несколько вариантов, искал в Интернете проблемы, с которыми сталкивались другие люди со своими строками подключения, и соответствующим образом менял их, но все равно получаю ту же ошибку:

FATAL: база данных "FRANK" не существует

Не знаю, почему я получаю эту ошибку, она явно там. Единственное, что в этом отличается от другого метода подключения, это провайдер или то, что это делается через Visual Studio. Провайдер, который я получил, был загружен с PGfoundry http://pgfoundry.org/projects/oledb/, это единственный то, что я мог подумать, будет проблемой. Какие-нибудь советы?


person Community    schedule 17.07.2012    source источник
comment
Проверьте, действительно ли ваша БД называется FRANK (все в верхнем регистре)! Подробнее, почему это важно, здесь: 4.1.1. Идентификаторы и ключевые слова.   -  person Milen A. Radev    schedule 17.07.2012
comment
@MilenA.Radev Спасибо за ответ, да, это действительно все в верхнем регистре. Я снова запустил код, изменив местоположение на откровенное на всякий случай. Думаю, я также упомяну, что он не может найти другие базы данных на этом сервере, включая базу данных postgres по умолчанию, поэтому проблема не только в этой базе данных.   -  person    schedule 23.07.2012


Ответы (1)


Вы пробовали использовать Npgsql? http://npgsql.projects.postgresql.org/

..
using Npgsql;
..

NpgsqlConnection con = new NpgsqlConnection("Server=192.168.0.64:5432;User ID=ourusername;password=ourpassword;Database=FRANK;timeout=1000");

также не забудьте настроить файлы pg_hba.conf и postgresql.conf сервера postgresql, чтобы они принимали ваш тип подключения.

person NewK    schedule 13.09.2012
comment
Npgsql является поставщиком ADO.Net, а не Oledb. Коммерческого провайдера Oledb можно найти здесь [pgoledb.com/ (Продукт Intellisoft LLC) - person netfed; 16.12.2019