|
|
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
Решил я написать классы доступа к серверу sql firebird(ну и остальные из этой кучи) Вообще я их уже начал, но решил сделать их доступными типа в исходниках :-) Основная мысль, чтобы их функциональность была подобна дельфевым объектам. чтобы лгче было переползать, так сказать. при этом исходники должны быть межплатформенными. чтоб легко можно было собрать проект под любую платформу. ну, если графики нету. хотя графику можно использовать какуюнибудь типа wxWindows. Что я реализовал. TDATABASE TTRANSACTION TQUERY и то, не до конца. хотелось бы услышать мнение людей, какие еще объекты нужно бы добавить, какие методы и свойства у этих объектов должны быть. я думаю, теперь нужно сделать TFIELD. От него отнаследовать несколько классов, типа TFIELDVARCHAR, TFIELDFLOAT, TFIELDINTEGER и т.д. или сделать как в дельфи, функции asString, asFloat, asInteger и т.д.? для чего это нужно мне? для обучения, раз. для самоутверждения два. ну и последнее, буду мелкие прикладухи не на дельфи писать, а на си. в общем, мысли и предложения. прошу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2004, 15:17 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
а разве нет OLEDB-провайдера для FB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2004, 03:01 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
есть наверное. а как пользоваться этим провайдером на FreeBSD компилируя при помощи gcc? я хочу простые, узконаправленные классы, которые не будут работать с тысячей серверов и поддерживать универсальную функциональность. пусть они будут настолько простыми как только можно, но не прощще(с). kiss рулит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2004, 09:08 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
Если вы остановитесь на qt вместо wxwindows то обнаружите что там уже есть data-bounded таблицы/поля и т.д. и обобщенный доступ до баз данных. Через ODBC. Для FB насколько я помню есть odbc драйвера easysoft-овские и какие-то родные с ibphoenix. В юниксах через unixodbc, в windows через родной odbc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2004, 13:11 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
я на qt не остановлюсь. не нравится мне то, что это все-в-одном библиотека. хочется отдельно иметь классы доступа к firebird и все. только и всего. и не качать хрен знает сколько исходников, которые только компилятся по несколько минут. и не устанавливать по двадцать библиотек плюс свежжайшие утилиты типа gmake а иначе ничего не скомплитися. просто. просто 5-10 классов, не больше в двух трех хидерах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2004, 03:02 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
Понятно. Тогда я удивлен вашим выбором - wxwindows. Не самая маленькая бибка.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2004, 09:10 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
вообще я не выбиал wxWindows. просто, "а вдруг". а вдруг понадобится сделать графическую тулзу под иксы. хотя пока такой работы не предвидится, но "а вдруг". а вот консольные проги под фришку мне уже очень надо. пишу на яве. а ява, на нашем 166 пне что являет собой шлюз хавает много процентов процессорного времени. мне это не шибко нравится. да и ставить ее, если что, много места надо. а у меня сервачек один есть, так там места совсе мало, даже логи не хранятся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2004, 10:21 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
2 Alex_K Честно говоря я сам думал над похожей проблеммкой. Если не сложно, вышли исходники или хотябы какую-то часть, в образовательных целях. Nimble@pisem.net Извени за тупой вопрос, но TDATASET тоже нужен, или ты считаешь, что Query можно обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2004, 18:49 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
пока они не примемлемо заработают ничего высылать или выкладывать не буду. ну чего позорится? насчет DATASET не вижу пока смысла. в дельфи этот объект используется для связки с визуальными контролами редактирования и просмотра. в своих проектах(на делфи) стараюсь использовать его по минимуму, в общем пока реализовывать не имею в планах. остается открытым другой вопрос, стоит ли делать несколько разных классов для доступа к данным разных типов или нужно сделать всю функциональность в одном классе. еще. я сделал упрощенно 4 типа данных: FBTYPE_INTEGER (все целочисленные данные) FBTYPE_VARCHAR (все строковые данные) FBTYPE_FLOAT (все числа с плавающей запятой) FBTYPE_DATETIME (дата и время) над блобом думаю. остальные типы остались за гранью моего разума :-) что думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2004, 19:19 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
alex_k я чето похожее уже сделал для sybase и пытался перенести на firebird(без одибиси). на fb мне не понравилось, что нет возможности произвольного доступа к любой записи в запросе, и я бросил эту работу (без одибиси). только оно вообще не похоже ни на что. -))) особенно на дельфи. alex_k>хочется отдельно иметь классы доступа к firebird и все. только и всего вот приблизительно это. безотносительно ко всяческим окнам. если тебе не лень ( я тоже начал с нескольких простых классов, а работы получилось неожиданно много. года два ваял ), то могу дать примеры использования, исходники и попробовать пообьяснять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 00:51 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
2tchingiz спасибо, но у меня пока вроде все ясно :-) давай так, зайду в тупик, обращусь. ок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 06:28 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
гут >я думаю, теперь нужно сделать TFIELD. ты собираешься доступаться по полям? то бишь в программе, которая будет читать запись таблицы, каждый обьект описывать руками через твои классы FBTYPE_INTEGER (все целочисленные данные) FBTYPE_VARCHAR (все строковые данные) FBTYPE_FLOAT (все числа с плавающей запятой) FBTYPE_DATETIME (дата и время) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 08:39 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
alex_k>какие методы и свойства у этих объектов должны быть. а обьекты для полей там тоже есть ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 08:41 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
ну примерно. все таки я решил сделать чуть-чуть иначе. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. вот так. почти работает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 08:48 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
забыл опен сделать :-) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 08:49 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
ты с одибиси работаешь? так ты там структуру таблицы разбираешь? в запросе? а движение по строчкам в запросе как? и компилятор не найдет не правильно названные поля "somestrfield" q->fieldByName("somestrfield")-.asString(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 09:00 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
нет не с odbc. через gds32.dll движение по строчка при помощи next(); prev(); first(); last(); moveBy(int); и компилятор не найдет не правильно названные поля "somestrfield" q->fieldByName("somestrfield")-.asString(); а вот этого я вообще не понял... ты имеешь в виду мою опечатку насчет ->? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 09:10 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
опечатка это фигня, каждому поеятно что не переключился на английский ... я так понимаю что tchingiz имел а виду вот такой случай скажем есть вот такой запрос: Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. (блин так и не удалось жирным выделить "SomeField_10". как по мне это не правельная логика работы сайта ... хотя у создателей наверно были на то причины) так вот в полученном запросе поля SomeField_10 не будет, а следовательно Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 10:58 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
мне кажется это ошибка не компилятора, не класса, а пользователя(программиста). зачем он обращается к несуществующему полю? функция fieldByName(string) вернет NULL и обращение к NULL как к TFBFIELD выдаст исключение, которое можно ловить. в принципе, эту ситуацию можно ловить в самой функции fieldByName(string) и возвращать указатель на экзэмпляр класса TFBFIELD с пустым содержимым или содержимым по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 14:43 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
мне кажется это ошибка не компилятора, не класса, а пользователя(программиста). зачем он обращается к несуществующему полю? функция fieldByName(string) вернет NULL и обращение к NULL как к TFBFIELD выдаст исключение, которое можно ловить. в принципе, эту ситуацию можно ловить в самой функции fieldByName(string) и возвращать указатель на экзэмпляр класса TFBFIELD с пустым содержимым или содержимым по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 14:45 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
вот глупый эксполорер :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 14:46 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
0 да 123456789098 1 не ну конечно ошибка программиста. как и все остальные ошибки. -))))))))) 2 неплохо бы переопределить конвертацию полей в соответствующей тип int i; FBTYPE_INTEGER ifb; ifb = 1; i = ifb; для ваших примеров, чтото типа такого: string someStr=q->fieldByName("SomeField_10"); 3 и для экспорта - импорта какое-то преобразование записей в строчку и обратно. 4 alex_k --- gds32.dll prev(); first(); last(); ---- у меня в fb есть долько gds32.lib. а в руководстве по апи я не нашел передвижение в запросе в обратном порядке. меня убеждали. что fb, может только сверху вниз позиционировать записи. это не правда? 5 собственно к таблице обращаешься через sqlda или в этом gds32.dll есть чтото другое? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 6 я по описанию таблицы генерировал структуру, которая использовалась для доступа к таблице. и в программе к полю обращался как q->SomeField_10 мои ошибки, связанные с неправильным указанием полей, радостно находил компилятор и меня уведомлял. естественно код, для обработки этих исключений ( alex_k>TFBFIELD выдаст исключение, которое можно ловить ) писать было не надо. в это время я пил пиво. /* хотя это вечная тема, кто лучше компилятор или интрепретатор -))))))))))))))))))))))) */ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 23:12 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
неплохо бы переопределить конвертацию полей в соответствующей тип это да, дело стоящее... у меня в fb есть долько gds32.lib. а в руководстве по апи я не нашел передвижение в запросе в обратном порядке. меня убеждали. что fb, может только сверху вниз позиционировать записи. это не правда? это правда. нужно эмулировать. пока думаю при необходимости фетчить. тоесть если ntxt();next();next(); то fetch();fetch();fetch() а вот если сразу last(); то тогда придется fetchall(); и держать в памяти. я по описанию таблицы генерировал структуру, которая использовалась для доступа к таблице. какая нечеловеческая логика :-) нет, я думаю а вдруг селккт в рантаме определять захочется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 23:48 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
это я както понимаю про next() ты лучше колись, как ты делаешь prev(); prev(); prev()? >нет, я думаю а вдруг селккт в рантаме определять захочется? во- первых, эта возможность есть. для наперед известных таблиц в сгенерированной структуре. а для наперед неизвестных таблиц, я, действительно, буду доступаться по имени поля в кавычках или по порядковому номеру. ;-P во - вторых, по большому счету для наперед неизвестных таблиц, она мне никогда не была нужна, за всю предыдущую жизнь. в любом случае, количество кода для известных таблиц существенно больше. поэтому я ошибки старался убрать пораньше на шаге компиляции. че про sqlda молчишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 02:30 |
|
||
|
классы доступа к firebird
|
|||
|---|---|---|---|
|
#18+
ты лучше колись, как ты делаешь prev(); prev(); prev()? че про sqlda молчишь? да я еще документацию читаю. у меня только запросы выполняются, а что делать с результатом запроса я пока не знаю :-) времени не очень много. щас вот пару часов назад дописал конторский прокси(и то, подглючивает). потом пописал левый проект пару часиков. а щас уже спать хочется, да рабочий день скоро, буду отчеты делать для отдела продаж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 02:53 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32388325&tid=2035325]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 377ms |

| 0 / 0 |
