ODBC Viewer

Discussion in 'WASM.WIN32' started by mc black, May 21, 2008.

  1. mc black

    mc black Member

    Blog Posts:
    0
    Joined:
    Jan 19, 2005
    Messages:
    213
    Location:
    Russia, N.Novgorod
    Написал вьювер таблиц баз данных без жёсткой привязки кода к структуре данных. Заголовки столбцов берутся из описания полей. Буферы под данные выделяются динамически. Поддерживаются пока только два типа данных: CHAR (VARCHAR) и INTEGER, в дальнейшем можно добавить числа с плавающей точкой и дата/время. Писал для собственных нужд, может пригодится другим.

    1. Есть ли у кого идеи, что в этом примере можно сделать лучше, где надо исправить кривой или лишний код, что сделать для увеличения надёжности, чего сильно недостает вьюверу и т.п.?

    Потом по доработанному исходнику при желании можно будет написать статейку типа в продолжение курса Iczelion'а по ODBC.

    2. Может есть смысл переделать программу как вьювер запросов, т.е. чтобы привязка шла не к _табличным_данным_, а к результатам выполнения любого запроса, возвращающего наборы записей?
     
  2. Aquila

    Aquila Самурай дзена

    Blog Posts:
    0
    Joined:
    Aug 30, 2002
    Messages:
    1,467
    Location:
    Russia, Moscow
    mc black
    Отличная идея!
     
  3. mc black

    mc black Member

    Blog Posts:
    0
    Joined:
    Jan 19, 2005
    Messages:
    213
    Location:
    Russia, N.Novgorod
    Aquila
    Да, я об этом думаю. Попробовать себя в числе авторов статей :)

    Пока покопался с исходником - переделал как ещё более универсальный код: теперь, как я писал раньше, есть возможность задать текст SQL-запроса любой строкой в коде и это будет показано в окне в ListView.

    База для тестирования та же самая, батник тоже тот самый, остальное - приаттачил.
     
  4. mc black

    mc black Member

    Blog Posts:
    0
    Joined:
    Jan 19, 2005
    Messages:
    213
    Location:
    Russia, N.Novgorod
    Сделано две важных доработки:

    1. Поддержка действительных двойной точности Real8 (использовал FpuFLtoA из FPULIB by Raymond Filiatreault, rayfil@hotmail.com)
    2. Поддержка дат из структур типа SQL_TYPE_TIMESTAMP.

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

    Кто-нибудь хоть тестировал последние варианты? Есть ли недовольные работой SQL-обозревателя? Конструктивная критика и здравые предложения по развитию приветствуются. Просьба при доработке кода ссылаться на меня и на этот вьювер.
     
  5. irrona

    irrona Member

    Blog Posts:
    0
    Joined:
    May 26, 2004
    Messages:
    178
    Location:
    Тирасполь
    Идея, конечно, хорошая. Только использование стандартных драйверов ODBC - это не ново. Достаточно прочитать уроки Iczelion'а, поднять описание работы с ODBC в MSDN и вперед. Можно наваять много чего. Но... Я как-то, с год назад, писал библиотеку для прямого чтения dbf-файлов (необходимость была именно в обращении к ним без посредства ODBC драйвера). Вот это было интересно. Правда осуществить что-либо наподобие SQL-запросов у меня, конечно, не получилось. Вот если бы замутить прямое чтение баз данных и таблиц (mdb, sql, dbf, db2 и т.д.), это было бы по-настоящему КРУТО. Фактически это означает написание собственного (не ODBC драйвера). Другой вопрос: а кому это надо?
     
  6. mc black

    mc black Member

    Blog Posts:
    0
    Joined:
    Jan 19, 2005
    Messages:
    213
    Location:
    Russia, N.Novgorod
    irrona
    Я ни в коей мере не хочу никому доказывать, что это ново и не считаю своей большой заслугой. Но руководство Iczelion'а на самом деле лишь вводная. А в сети мне не встретилось пока ни одного исходника на masm, которые бы отображали инфу запроса, БЕЗ жёткой привязки возвращаемых типов данных к коду программы. На практике программисту в лом будет прописывать типы данных, если придётся выводить на экран десятки видов запросов с разными наборами полей. Я просто автоматизировал поддержку типов данных и автоматическое выделения буферов для связывания.

    Можно писать драйвера баз данных, можно даже придумать свой формат данных или задействовать чужой открытый формат, только действительно кому это надо? Лично у меня есть цель. Я буду в дальнейшем использовать этот исходник как важную часть более крупного проекта и это уже не будет open source. OBDC - это нормальная, хорошо отработанная технология доступа к данным, по ней достаточно документации. Я выбрал её потому, что её намного проще реализовать на ассемблере, чем, скажем ADO (хотя я хорошо знаю ADO и много раз её использовал на VB6/VBA).

    А конкретно здесь я выложил код, чтобы у людей был хоть один пример, немного выходящий за рамки уроков Iczelion'а. Соответственно может будут желающие указать на корявость некоторых моих вычислений и думал может предложат более красивый вариант. Только из этого по ходу ничего не выйдет. Люди скачали код больше полсотни раз и ни разу не запостили по существу.
     
  7. mc black

    mc black Member

    Blog Posts:
    0
    Joined:
    Jan 19, 2005
    Messages:
    213
    Location:
    Russia, N.Novgorod
    Может кому-то понадобится: программное создание таблицы dBase (файла *.dbf) средствами ODBC. Каталог базы и каталог по умолчанию в данном случае совпадают с каталогом расположения бинарника. SQL DDL-запросом CREATE TABLE создается структура таблицы базы данных (структура dbf-файла). Подробности во вложении.