Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение БД PostgreSQL из C#, как подключить БД PostgreSQL??? 
:(
    Опции темы
MissVictoriya
Дата 29.3.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



Привет.
Опытные программисты, подскажите как подключить БД.
Есть много информации про SQL Server?  а вот по PostgreSQL не найду никак. 
Даже не знаю, правильное имя Провайдера  и другие параметры тоже.
Короче, помогите smile
PM MAIL   Вверх
Magnifico
Дата 29.3.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



Провайдер  Npgsql2.0beta2.zip бесплатный

http://pgfoundry.org/frs/?group_id=1000140

примеры :

http://npgsql.projects.postgresql.org/docs...UserManual.html
http://npgsql.projects.postgresql.org/exampleprograms.html

рабоа с ним мало чем отличается от  System.Data.SqlClient

на этой страничке можно много че найти:

http://search.postgresql.org/search?q=npgs...p;submit=Search

есть еще платный (не пробовал)
PostgreSQLDirect .NET Data Provider
http://crlab.com/download.html


--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
MissVictoriya
Дата 30.3.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



Magnifico

Спасибо, конечно.
Но я сейчас не могу эти страницы посмотреть, соответственно, не знаю что там.
Поэтому есть такой вопрос:
Что в строке подключения писать?
PM MAIL   Вверх
Magnifico
Дата 30.3.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



кидаем в папку проекта /bin/debug   вышеозначенный провайдер (Mono.Security.dll и Npgsql.dll)
в проекте делаем референс на  Npgsql.dll

Код

using System;
using System.Data;
using Npgsql;

public class NpgsqlUserManual
{
  public static void Main(String[] args)
  {
    NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=secret;Database=myBase;");
    conn.Open();
    conn.Close();
  }
}



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
MissVictoriya
Дата 31.3.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



Magnifico, Спасибо большое, все скачала, попоробую теперь разобраться.


PM MAIL   Вверх
MissVictoriya
Дата 1.4.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



Не получилось :(
Файлы в проект добавила, референс подключила.
Ошибки как таковой не выдает, только предупреждение:

NpgsqlException was unhandled:
Этот хост неизвестен.

Да, и вообще, ничего не происходит, окно консоли ничего не выводит.
Вот.

Код


using System;
using System.Data;
using System.Windows.Forms;
using Npgsql;

public class NpgsqlUserManual
{
  public static void Main(String[] args)
  {
      int i;
    NpgsqlConnection con = new NpgsqlConnection("Server=PostgreSQL Database Server 8.3;Port=5432; User Id=postgres; Password=1205;Database=tamplate1;");
    con.Open();

    NpgsqlCommand command = new NpgsqlCommand("select * from tm", con);


    try
    {
        NpgsqlDataReader dr = command.ExecuteReader();
        while (dr.Read())
        {
            for (i = 0; i < dr.FieldCount; i++)
            {
                Console.Write("{0} \t", dr[i]);
            }
            Console.WriteLine();
        }

    }

    finally
    {


Вот. 
Я тут сомневаюсь, когда в референс добавляю npgsql, ссылаться на мой проект?
И куда извлекать Npgsql2.0beta2.zip?
PM MAIL   Вверх
Magnifico
Дата 1.4.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



 
Цитата

NpgsqlConnection con = new NpgsqlConnection("Server=PostgreSQL Database Server 8.3;Port=5432; User Id=postgres; Password=1205;Database=tamplate1;");
    con.Open();


У тебя имя компьютера такое (PostgreSQL Database Server 8.3) ?  Я сомневаюсь.
"Server=127.0.0.1  если локальная БД или Имя компьютера:  "Server=Vasya или локальный IP "Server=192.168.103.17

http://connectionstrings.com/?carrier=postgresql

Цитата

И куда извлекать Npgsql2.0beta2.zip?

Там 2 файла : Mono.Security.dll и Npgsql.dll в папку проекта  /bin/debug
пример
H:\Work\CNET\SharpDevelop\Console\Postgres\ConsolePostgres\bin\Debug   <---сюда
референс Solution Explorer - references - ad reference   на  Npgsql.dll 

в постгресе
pg_hba.conf (должен принимать соединения по 127.0.0.1 к твоей базе  или другому IP (ALL все базы или все юзеры))

Цитата

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host         db_1  postgres    127.0.0.1/32  trust
host      all      all       192.168.103.17/32      trust



Код

using System;
using System.Data;
using Npgsql;

namespace ConsolePostgres
{
    class Program
    {
        
        public static void Main(string[] args)
        
        {        
    NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=098poi;Database=db_1;");
    conn.Open();
    
    NpgsqlCommand command = new NpgsqlCommand("select * from names", conn);

    try
    {
    NpgsqlDataReader dr = command.ExecuteReader();
    while(dr.Read())
    {
        for (int i = 0; i < dr.FieldCount; i++)
        {
            Console.Write("{0} \t", dr[i]);
        }
        Console.WriteLine();
    }
    }
    catch(NpgsqlException ex)
    {
        Console.Write(ex.ToString());
    }

    finally
    {
      conn.Close();
    }
    
            Console.Write(" \n Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
MissVictoriya
Дата 3.4.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



МГ, ну я попробую конечно.
А где найти pg_hba.conf ? Я конечно догадываюсь, просто проверить не могу, т.к. работаю и тут проги нету, а дома нет только с телеыфона :(
Вот.
А ты не пробовал подключить провайдер к .NET? Чтоб он в списке провайдеров был, в System.Data?

Цитата

    Я скачал .NET PostgreSQL data provider, подскажите пожаулуйста как его зарегистрировать так, чтобы он был виден в списке датапровайдеров, когда выбираешь провайдера для SqlDataSource(ASP.NET 2.0) Заранее благодарен.


Попробуй добавить в machine.config в <system.data><DbProviderFactories>
строчку <add name="[имя провайдера]" invariant="[его пространство имён или что еще -- главное, чобты оно было уникальным]" description="[описание]" type="[имя класса фабрики (фабрику реализовать по аналогии, скажем, с System.Data.SqlClient.SqlClientFactory)]", [полное имя сборки, сборка должна быть в GAC]"/>
Сам я никогда подобного не делал, но мне самому очень интересно (да не только мне), как добавлять собственых провайдеров, так что напиши пожалуйста о результатах, тем более эта тема здесь еще не обсуждалась.


Вот, я не поняла, что где прописывать надо.
smile
PM MAIL   Вверх
Magnifico
Дата 3.4.2008, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



machine.config для asp.net
http://www.intuit.ru/department/internet/aspnetsetup/1/

Цитата

Для настроек PostgreSQL используются файлы: 
pg_hba.conf - политика доступа и идентификации пользователей, 
postgresql.conf - настройки сервера.

про это читать здесь http://wiki.linuxformat.ru/index.php/LXF90:PostgreSQL

находится он по адресу D:\Program Files\PostgreSQL\8.1\data\pg_hba.conf 

А зачем тебе вообще постгресскюэль.
Ты с ним уже работала хотя бы  через PG admin ?

почитай для начала  FAQ
http://postgresql.ru.net/docs/FAQ_russian.html

full manual
http://www.postgresql.org/docs/8.3/interactive/index.html

ты все усложняешь ,наладь сначала работу через  pg Admin (редактируя pg_hba.conf )


--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
MissVictoriya
Дата 6.4.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.3.2008

Репутация: нет
Всего: нет



Все получилось!

в pg_hba.conf  все прописала. 
И еще для подключения к таблицы нужно было прописать имя схемы.
Код

 NpgsqlCommand command = new NpgsqlCommand("select * from nameSchema.nameTable", conn);

 Вот.
А можно сделать так, что не писать каждый раз имя схемы?
С постгресс работаю впервые, диплом надо написать smile

Тебе большое спасибо  smile 

Это сообщение отредактировал(а) MissVictoriya - 6.4.2008, 16:26
PM MAIL   Вверх
Magnifico
Дата 6.4.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



после создания базы всегда создается схема public
и таблицы в ней не требуют квалификатора    schema.table
если не нарушены установки поиска  их проверить можно так     SHOW search_path;
вернет результат:   "$user",public
а изменить так :      SET search_path TO myschema,public;

теперь путь поиска будет в схемах myschema и public

и к находящейся таблице в схеме myshema можно будет обращаться просто 
select * from mytable  (а не select * from myschema.mytable )

в принципе все это есть здесь ( на родном  английском языке)  :
http://www.postgresql.org/docs/8.3/interac...dl-schemas.html


если остались вопросы то пиши в личку или на мыло : [email protected]

Это сообщение отредактировал(а) Magnifico - 20.8.2009, 20:47


--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.