Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / npgsql & composite types / 12 сообщений из 12, страница 1 из 1
03.02.2008, 00:03
    #35106299
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
чисто для общего любопытства :) - вот постгрес даёт возможность всячески изголяться с типами - вплоть до столбцов в таблицах из них и т.п. Любопытное дело - может оно для чего-то может оказаться полезным даже :). Только вот что-то я не пойму как быть с npgsql - как оно его будет отрабатывать? особенно в области параметров - там же тип задаваться должен... Токо текстом чтоли? или таки как-то можно более цивильно? С дата-тейбл тоже не понятно - ну это я щас проведу пару следственных экспериментов :). Ну и вообще интересует кто-то это дело пользовал в мирных целях? :) И чем оно может быть полезным - шото я теряюсь в догадках :) Но мне это очень интересно - т.к. я убеждён, что нужно использовать все нестандартные возможности постгреса - т.к. реально не вижу смысла бороться за переносимость - потому что нормальной альтернативы постгресу не вижу.
...
Рейтинг: 0 / 0
04.02.2008, 18:15
    #35109128
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
aovчисто для общего любопытства :) - вот постгрес даёт возможность всячески изголяться с типами - вплоть до столбцов в таблицах из них и т.п. Любопытное дело - может оно для чего-то может оказаться полезным даже :). Только вот что-то я не пойму как быть с npgsql - как оно его будет отрабатывать? особенно в области параметров - там же тип задаваться должен... Токо текстом чтоли? или таки как-то можно более цивильно? С дата-тейбл тоже не понятно - ну это я щас проведу пару следственных экспериментов :). Ну и вообще интересует кто-то это дело пользовал в мирных целях? :) И чем оно может быть полезным - шото я теряюсь в догадках :) Но мне это очень интересно - т.к. я убеждён, что нужно использовать все нестандартные возможности постгреса - т.к. реально не вижу смысла бороться за переносимость - потому что нормальной альтернативы постгресу не вижу.

провёл эксперименты?
...
Рейтинг: 0 / 0
04.02.2008, 18:29
    #35109148
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
нет пока - шото руки не доходят. ещё немного подожду - может кто ответит :)
вообще по аналогии с прочими экзотическими типами данных пгскля видимо в дататейбл тип обжект будет... уверен на 99%. токо не понятно чего дальше то с ним делать...
...
Рейтинг: 0 / 0
04.02.2008, 18:30
    #35109152
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
aovнет пока - шото руки не доходят. ещё немного подожду - может кто ответит :)
вообще по аналогии с прочими экзотическими типами данных пгскля видимо в дататейбл тип обжект будет... уверен на 99%. токо не понятно чего дальше то с ним делать...

вряд ли кто ответит, все тебя ждут
а может будет то, что получается при преобразовании типа в text
...
Рейтинг: 0 / 0
04.02.2008, 18:30
    #35109154
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
точнее не так - дбтайп будет обжект - как-то так :)
...
Рейтинг: 0 / 0
04.02.2008, 21:14
    #35109361
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
вот мои эксперименты на эту тему:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create type test_type as (id int, descr text);
create table test(id serial primary key, test test_type not null);

insert into test values
(default, row( 1 ,'test1')),
(default, row( 2 ,'test2')),
(default, row( 3 ,'test3')),
(default, row( 4 ,'test4')),
(default, row( 5 ,'test5')),
(default, row( 6 ,'test6')),
(default, row( 7 ,'test7'));

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test_comp_types
{
    public partial class frmMain : Form
    {
        ToolStrip menu; SourceGrid.DataGrid dg;

        Npgsql.NpgsqlConnection con;
        Npgsql.NpgsqlDataAdapter da;

        DataTable dt;

        public frmMain()
        {
            InitializeComponent();

            dg = new SourceGrid.DataGrid(); dg.Dock = DockStyle.Fill; this.Controls.Add(dg);
            menu = new ToolStrip(); menu.Dock = DockStyle.Top; this.Controls.Add(menu);

            this.Load += new EventHandler(frmMain_Load);
        }

        void frmMain_Load(object sender, EventArgs e)
        {
            con = new Npgsql.NpgsqlConnection("server=localhost;port=5432;database=test;uid=test;pwd=1;encoding=unicode;");
            con.Open();
            da = new Npgsql.NpgsqlDataAdapter("select * from test", con);
            //da.InsertCommand=new 
            dt = new DataTable();
            da.Fill(dt);
            dg.DataSource =new DevAge.ComponentModel.BoundDataView(dt.DefaultView);

            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            menu.Items.Add(new ToolStripLabel("dt.Columns[\"test\"].DataType.FullName="
                +dt.Columns["test"].DataType.FullName));
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        }
    }
}

и вот он результат - в прикреплённом малюнке
...
Рейтинг: 0 / 0
04.02.2008, 21:30
    #35109376
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
пытался на скорую руку сделать сохранение :)
Код: plaintext
1.
2.
3.
 
Npgsql.NpgsqlCommandBuilder bdr = new Npgsql.NpgsqlCommandBuilder(da);
menu.Items.Add("SAVE", null, delegate { da.Update(dt); });
получил ошибку:
ERROR: 42883: operator does not exist: test_type = "unknown" :)

щас подругому как-то попробую. если текстовой коммандой сохранять - то всё понятно. ну или например хранимкой, принимающей текст вместо сложного типа . . . однако на лицо другая проблема - интереснее :) - как в какой-то более человеческой форме отображать данные пользователю :). хотя это видимо сильно уже зависит от контекста...

ну вобщем можно сказать что основной вопрос - т.е. "нафига это нужно?" или "какая от этого может быть польза?" - он остался без ответа пока. ну вот чуйствую что можно из этого дела какую-то пользу поиметь - токо какую? :)
...
Рейтинг: 0 / 0
04.02.2008, 22:03
    #35109402
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
вот сохранение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
da.InsertCommand = new Npgsql.NpgsqlCommand("insert into test values(default,:test::test_type);"
                + "select * from test where id=lastval();", con);
            da.InsertCommand.Parameters.Add(":test", NpgsqlTypes.NpgsqlDbType.Text,  0 , "test");

            da.UpdateCommand = new Npgsql.NpgsqlCommand("update test set test=:test::test_type where id=:id;"
                + "select * from test where id=:id;", con);
            da.UpdateCommand.Parameters.Add(":id", NpgsqlTypes.NpgsqlDbType.Integer,  4 , "id");
            da.UpdateCommand.Parameters[":id"].SourceVersion = DataRowVersion.Original;
            da.UpdateCommand.Parameters.Add(":test", NpgsqlTypes.NpgsqlDbType.Text,  0 , "test");

            da.DeleteCommand = new Npgsql.NpgsqlCommand("delete from test where id=:id;", con);
            da.DeleteCommand.Parameters.Add(":id", NpgsqlTypes.NpgsqlDbType.Integer,  4 , "id");
            da.DeleteCommand.Parameters[":id"].SourceVersion = DataRowVersion.Original;

            dg.Columns[ 0 ].DataCell.Editor = null;

            menu.Items.Add("SAVE", null, delegate { da.Update(dt); });
...
Рейтинг: 0 / 0
04.02.2008, 22:05
    #35109407
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
по прежнему не понятно зачем это может быть нужно :) предлагаю провести консилиум на эту тему :)
...
Рейтинг: 0 / 0
05.02.2008, 19:05
    #35111914
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
Winnipuh aovнет пока - шото руки не доходят. ещё немного подожду - может кто ответит :)
вообще по аналогии с прочими экзотическими типами данных пгскля видимо в дататейбл тип обжект будет... уверен на 99%. токо не понятно чего дальше то с ним делать...

вряд ли кто ответит, все тебя ждут
а может будет то, что получается при преобразовании типа в text

ну вот - оказалось не меня ждали - я тут - а толку нет
...
Рейтинг: 0 / 0
05.02.2008, 21:52
    #35112105
Niemi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
а вы всётаки пробуйте, потом по вашим стопам поёдём толпа народу. дерзайте! нам тоже интересно.
...
Рейтинг: 0 / 0
05.02.2008, 22:47
    #35112158
aov
aov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
npgsql & composite types
ну так это - ступайте пожалуйста :-) - что - мало напробовано? :-)
ну там получается дальше пробы уже должны быть в направлении юзер-френдли интерфейса для удобства работы пользователей с этим делом. Ну и тут уже открываются ну очень широкие горизонты - вариантов много очень: датагридвьюколумнстайл для датагридвью, эдитор свой для сурсгрида (тот, что у меня - рекоммендую всем - я от него торчу просто :-)), или всекие нагромождения контролов для редактирования одной записи - или юзер-контрол опять же ш из этого же нагромождения контролов. Объединяет все эти варианты одно: все они геморноватые :-).
А из этого что следует? правильно! - надо иметь более-менее уважительные причины, чтобы оправдать перед своей совестью убийство времени на дальнейшие изыски в этой области.
Т.е. уважаемые товарищи - которые возможно с интересом наблюдают за ходом моих изысков - предлагаю провести мозговой штурм на тему "как бы это дело с пользой применить в прикладной программе". Просто каждому черкнуть пару слов - первое что в голову придёт. Пусть сумбурно, пусть местами бредово - вдруг когото это натолкнёт на что-то более интересное и серьёзное.
Господа, прошу - не стесняемся, не переминаемся с ноги на ногу в стороне :)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / npgsql & composite types / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]