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

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

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

Код: 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
npgsql & composite types
    #35109376
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пытался на скорую руку сделать сохранение :)
Код: 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
npgsql & composite types
    #35109402
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот сохранение:
Код: 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
npgsql & composite types
    #35109407
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по прежнему не понятно зачем это может быть нужно :) предлагаю провести консилиум на эту тему :)
...
Рейтинг: 0 / 0
npgsql & composite types
    #35111914
Фотография aov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh aovнет пока - шото руки не доходят. ещё немного подожду - может кто ответит :)
вообще по аналогии с прочими экзотическими типами данных пгскля видимо в дататейбл тип обжект будет... уверен на 99%. токо не понятно чего дальше то с ним делать...

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

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


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