Автор | Сообщение |
|
| moderator
|
Пост N: 2201
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.10.23 16:46. Заголовок: Библиотека SQLRDD для Харбора
Всем кому это интересно Стали доступны исходники известной библиотеки SQLRDD для xXарбора, которая раньше была платной. Сейчас адаптирую для работы с Минигуи эту библиотеку, которая позволяет портировать синтаксис Харбора без всяких изменений для работы с серверами MySQL, Postgres, Firebird, Oracle, MS SQL. Подготовил для сравнения две программы - одна использует SQLRDD для доступа к таблице на сервере MySQL, а другая использует для доступа к DBF драйвер DBFCDX. Код первой программы ниже #include "minigui.ch" #include "sqlrdd.ch" REQUEST SQLRDD REQUEST SR_MYSQL // NOTE: the database must exist before runnning the test. #define SERVER "localhost" #define UID "root" #define PWD "mypass" #define DTB "test" *--------------------------------------------------------* FUNCTION Main() *--------------------------------------------------------* LOCAL nConnection rddSetDefault( "SQLRDD" ) nConnection := sr_AddConnection( CONNECT_MYSQL, "MySQL=" + SERVER + ";UID=" + UID + ";PWD=" + PWD + ";DTB=" + DTB ) IF nConnection < 0 Alert( "Connection error. See sqlerror.log for details." ) RETURN NIL ELSE //Alert( "Connected to : " + SR_GetConnectionInfo(, SQL_DBMS_NAME ) + " " + SR_GetConnectionInfo(, SQL_DBMS_VER ) ) ENDIF DEFINE WINDOW Form_1 ; WIDTH 640 HEIGHT 480 ; TITLE 'SQLRDD Demo' ; MAIN NOMAXIMIZE ; ON INIT OpenTable() ; ON RELEASE CloseTable() DEFINE MAIN MENU DEFINE POPUP 'Test' MENUITEM 'Add record' ACTION AddRecord( 'ARG', 'Argentina', 38740000 ) SEPARATOR ITEM "Exit" ACTION ThisWindow.Release() END POPUP END MENU @ 10, 10 BROWSE Browse_1 ; WIDTH 610 ; HEIGHT 390 ; HEADERS { 'Code', 'Name', 'Residents' } ; WIDTHS { 50, 160, 100 } ; WORKAREA country ; FIELDS { 'Code', 'Name', 'Residents' } ; JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT } ; EDIT ; INPLACE ; READONLY { .T., .F., .F. } END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 RETURN NIL *--------------------------------------------------------* PROCEDURE OpenTable *--------------------------------------------------------* Form_1.Browse_1.VISIBLE := .F. CreateTable() INDEX ON FIELD->RESIDENTS TAG residents TO country GO TOP Form_1.Browse_1.VISIBLE := .T. RETURN *--------------------------------------------------------* PROCEDURE CloseTable *--------------------------------------------------------* dbCloseArea( "country" ) RETURN *--------------------------------------------------------* FUNCTION CreateTable *--------------------------------------------------------* LOCAL aStruct := { ; { "CODE", "C", 3, 0 }, ; { "NAME", "C", 50, 0 }, ; { "RESIDENTS", "N", 11, 0 } ; } IF sr_file( "country" ) sr_DropTable( "country" ) sr_DropIndex( "country" ) ENDIF dbCreate( "country", aStruct, "SQLRDD" ) USE country /*EXCLUSIVE*/ VIA "SQLRDD" dbAppend() REPLACE CODE WITH 'LTU', NAME WITH 'Lithuania', RESIDENTS WITH 3369600 dbAppend() REPLACE CODE WITH 'USA', NAME WITH 'United States of America', RESIDENTS WITH 305397000 dbAppend() REPLACE CODE WITH 'POR', NAME WITH 'Portugal', RESIDENTS WITH 10617600 dbAppend() REPLACE CODE WITH 'POL', NAME WITH 'Poland', RESIDENTS WITH 38115967 dbAppend() REPLACE CODE WITH 'AUS', NAME WITH 'Australia', RESIDENTS WITH 21446187 dbAppend() REPLACE CODE WITH 'FRA', NAME WITH 'France', RESIDENTS WITH 64473140 dbAppend() REPLACE CODE WITH 'RUS', NAME WITH 'Russia', RESIDENTS WITH 141900000 RETURN NIL *--------------------------------------------------------* PROCEDURE AddRecord( cCode, cName, nResidents ) *--------------------------------------------------------* APPEND BLANK REPLACE CODE WITH cCode, ; NAME WITH cName, ; RESIDENTS WITH nResidents dbUnlock() // Recno() is valid only after UNLOCK or COMMIT Form_1.Browse_1.VALUE := country->( RecNo() ) Form_1.Browse_1.Refresh RETURN и для сравнения код второй программы: #include "minigui.ch" REQUEST DBFCDX *--------------------------------------------------------* FUNCTION Main() *--------------------------------------------------------* rddSetDefault( "DBFCDX" ) DEFINE WINDOW Form_1 ; WIDTH 640 HEIGHT 480 ; TITLE 'DBFCDX Demo' ; MAIN NOMAXIMIZE ; ON INIT OpenTable() ; ON RELEASE CloseTable() DEFINE MAIN MENU DEFINE POPUP 'Test' MENUITEM 'Add record' ACTION AddRecord( 'ARG', 'Argentina', 38740000 ) SEPARATOR ITEM "Exit" ACTION ThisWindow.Release() END POPUP END MENU @ 10, 10 BROWSE Browse_1 ; WIDTH 610 ; HEIGHT 390 ; HEADERS { 'Code', 'Name', 'Residents' } ; WIDTHS { 50, 160, 100 } ; WORKAREA country ; FIELDS { 'Code', 'Name', 'Residents' } ; JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT } ; EDIT ; INPLACE ; READONLY { .T., .F., .F. } END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 RETURN NIL *--------------------------------------------------------* PROCEDURE OpenTable *--------------------------------------------------------* Form_1.Browse_1.VISIBLE := .F. CreateTable() INDEX ON FIELD->RESIDENTS TAG residents TO country GO TOP Form_1.Browse_1.VISIBLE := .T. RETURN *--------------------------------------------------------* PROCEDURE CloseTable *--------------------------------------------------------* dbCloseArea( "country" ) RETURN *--------------------------------------------------------* FUNCTION CreateTable *--------------------------------------------------------* LOCAL aStruct := { ; { "CODE", "C", 3, 0 }, ; { "NAME", "C", 50, 0 }, ; { "RESIDENTS", "N", 11, 0 } ; } IF File( "country.dbf" ) FErase( "country.dbf" ) FErase( "country.cdx" ) ENDIF dbCreate( "country", aStruct, "DBFCDX" ) USE country /*EXCLUSIVE*/ VIA "DBFCDX" dbAppend() REPLACE CODE WITH 'LTU', NAME WITH 'Lithuania', RESIDENTS WITH 3369600 dbAppend() REPLACE CODE WITH 'USA', NAME WITH 'United States of America', RESIDENTS WITH 305397000 dbAppend() REPLACE CODE WITH 'POR', NAME WITH 'Portugal', RESIDENTS WITH 10617600 dbAppend() REPLACE CODE WITH 'POL', NAME WITH 'Poland', RESIDENTS WITH 38115967 dbAppend() REPLACE CODE WITH 'AUS', NAME WITH 'Australia', RESIDENTS WITH 21446187 dbAppend() REPLACE CODE WITH 'FRA', NAME WITH 'France', RESIDENTS WITH 64473140 dbAppend() REPLACE CODE WITH 'RUS', NAME WITH 'Russia', RESIDENTS WITH 141900000 RETURN NIL *--------------------------------------------------------* PROCEDURE AddRecord( cCode, cName, nResidents ) *--------------------------------------------------------* APPEND BLANK REPLACE CODE WITH cCode, ; NAME WITH cName, ; RESIDENTS WITH nResidents Form_1.Browse_1.VALUE := country->( RecNo() ) Form_1.Browse_1.Refresh RETURN Как Вы можете увидеть, различия у этих программ минимальные: для SQLRDD нужно добавить только подключение к серверу MySQL. Ваши комментарии на тему актуальности этой библиотеки приветствуются...
| |
|
Ответов - 36
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 7836
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.10.23 18:50. Заголовок: Интересно а где исхо..
Интересно а где исходники лежат ?
| |
|
|
| moderator
|
Пост N: 2202
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.10.23 19:05. Заголовок: Dima пишет: Ориги..
Dima пишет: Оригинальные исходники для хХарбора лежат здесь. Но без некоторой трансформации они не будут работать под Харбором, хотя гуру [х]Харбора Пржемек Черпак и внес изменения в код для совместимости. P.S. Дима, как всегда, среагировал первым.
| |
|
|
| постоянный участник
|
Пост N: 7594
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.10.23 21:42. Заголовок: На Postgres у меня е..
На Postgres у меня есть работающая прога, сделал ещё в 2015 году, до сих пор работает. Переделать может и буду, но после того как заставлю версию 23.09.2 собирать правильно мою большую прогу (352 файла, 13Мб кода). Вместе с Сергеем сделал тестовый вариант-заготовку программы, как у меня в большой системе, этот вариант собирается нормально. В 23.09 опять полезла проблема по вызову STANDARD + 3 MODAL окна, после которого на 2 MODAL окне кнопки блокируются и не работают. Помогает выход по ESC. А вот со второго входа в эти окна подвисание окна пропадает. Если вышел из окна STANDARD, то после входа опять в этот режим - начинается повтор этого глюка. И как с этим бороться ?
| |
|
|
| постоянный участник
|
Пост N: 4429
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.10.23 11:34. Заголовок: gfilatov2002 пишет К..
gfilatov2002 пишет цитата: | Как Вы можете увидеть, различия у этих программ минимальные: для SQLRDD нужно добавить только подключение к серверу MySQL. |
| Но не видно, как все согласуется с SQL языком, база создана им, типы данных, индексы, связи таблиц ... тоже Как будет доступ к данным с 10 000 000 записей в таблице (с SQL это надо исп. LIKE ...), выборки по select ... с вложенными select понятны, как тут. Сделали USE на таблицу, описания, триггера подключились ?
| |
|
|
| |
Пост N: 7839
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.10.23 16:52. Заголовок: SergKis Вот дока ес..
| |
|
|
| постоянный участник
|
Пост N: 4431
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.10.23 18:31. Заголовок: Dima Спасибо :sm36:..
Dima Спасибо Но что то он у меня на 8.1 acrobat убивает, валит попробовал другие, оказалось тоже валится, как говорится "будем искать"
| |
|
|
| |
Пост N: 7840
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.10.23 18:52. Заголовок: SergKis У меня паше..
SergKis У меня пашет но открывал прямо в FIREFOX
| |
|
|
| |
Пост N: 7841
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.10.23 18:55. Заголовок: Пробнул тут тоже паш..
Пробнул тут тоже пашет
| |
|
|
| |
Пост N: 7842
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.10.23 19:10. Заголовок: преобразовал в WORD ..
преобразовал в WORD , скинул к тебе на FTP
| |
|
|
| постоянный участник
|
Пост N: 4432
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.10.23 20:36. Заголовок: Dima пишет Пробнул т..
Dima пишет Пробнул и я у себя на PC с 10 (пришла зарядка) "ФигВам называется" Acrobat просит ключ регистрации и еще что (не так давно стал это делать) сбрасываешь, так и acrobat закрывается На 8.1 там просто валится типа ошибка windows, думаю лезет в сист. каталоги c:\Users\... , а они зборонены Сегодня Youtub сказал "У вас включен блокировщик рекламы, надо выключить ведь Реклама - это ... бла бла бла" Пока еще работает цитата: | преобразовал в WORD , скинул к тебе на FTP |
| Большое спасибо Посмотрю
| |
|
|
| постоянный участник
|
Пост N: 1681
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.10.23 20:39. Заголовок: Суматра открывает..
Суматра открывает
| |
|
|
|
| постоянный участник
|
Пост N: 1682
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.10.23 20:40. Заголовок: https://i.postimg.cc..
| |
|
|
| постоянный участник
|
Пост N: 1683
Зарегистрирован: 27.01.07
|
|
Отправлено: 14.10.23 20:49. Заголовок: Что-то не впечатляет..
Что-то не впечатляет...
| |
|
|
| Администратор
|
Пост N: 4132
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.10.23 21:44. Заголовок: так написано же: SQ..
так написано же: SQLRDD for xHarbour 38 © 2004 - Marcelo Lombardo – marcelo@xharbour.com.br и в сырцах копирайты 2003 и подобных нулевых годов 20 лет тому назад Postgres 8.0 это 2005-й
| |
|
|
| постоянный участник
|
Пост N: 4433
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.10.23 22:35. Заголовок: Смотрю для FireBird ..
Смотрю для FireBird Firebird 1.5 and 2.0 - это совсем устаревшее, делал прибамбас задаче на версию FB 2.5 от 2012 года через dll (в hmg есть рыба) получение структур и данных, для типа N получал длину данных 9 байт, а в базе реально 12 -> отказался, сделал через утилиту isql.exe + файлы после нее в память => быстрая обработка ~10 000 000 записей в одной таблице. Поля memo были 10К, autoincrement ... Не знаю подошел бы вариант SQLRDD for xHarbour 38 для этого (взят за основу RDDNTX) ?
| |
|
|
| постоянный участник
|
Пост N: 1684
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.10.23 09:33. Заголовок: Pasha пишет: так на..
Pasha пишет: Вот я ж и говорю, что не впечатляет)
| |
|
|
| moderator
|
Пост N: 2203
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.10.23 14:08. Заголовок: Pasha пишет: 20 лет..
Pasha пишет: Так и есть. Поэтому я и спрашивал, насколько актуально использование этой библиотеки. SergKis пишет: цитата: | Смотрю для FireBird Firebird 1.5 and 2.0 - это совсем устаревшее |
| Спешу обрадовать, что я не использую оригинальные исходники для хХарбора. Я нашел форк этой библиотеки, адаптированный для Харбора, с поддержкой новых версий FireBird: - добавлены новые фукции SR_FIREBIRD3, SR_FIREBIRD4, SR_FIREBIRD5.
| |
|
|
| постоянный участник
|
Пост N: 4434
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.10.23 14:29. Заголовок: gfilatov2002 пишет Я..
gfilatov2002 пишет цитата: | Я нашел форк этой библиотеки, адаптированный для Харбора, с поддержкой новых версий FireBird: |
| Если есть и для свежих MySql, то однозначно, библиотека интересна
| |
|
|
| moderator
|
Пост N: 2204
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.10.23 15:12. Заголовок: SergKis пишет: есть..
SergKis пишет: Я собирал все примеры для MySQL версии 8.0.30. Они все работают после моих корректировок. Эта версия достаточно свежая Кстати, библиотека имеет встроенный парсер для SQL запросов и свой генератор SQL на его основе. Пример использования см. ниже *--------------------------------------------------------* Procedure OpenTable *--------------------------------------------------------* LOCAL cComm LOCAL apCode LOCAL nErr LOCAL nPos RDDSETDEFAULT( "SQLRDD" ) cComm := [SELECT Country.Name AS Country, City.Name AS Capital_City ] + ; [FROM Country, City ] + ; [WHERE Country.Capital = City.ID ] + ; [ORDER BY Country, Capital_City] apCode := SR_SQLParse( cComm, @nErr, @nPos ) cComm := SR_SQLCodeGen( apCode ) dbUseArea( .T.,, cComm, "Country" ) Return
| |
|
|
| постоянный участник
|
Пост N: 4435
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.10.23 15:38. Заголовок: gfilatov2002 Тогда ..
gfilatov2002 Тогда все хорошо, просто SUPER
| |
|
|
| Администратор
|
Пост N: 4133
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.10.23 19:32. Заголовок: Там еще очень подроб..
Там еще очень подробная дока есть, в том числе по функциям. Проект же был коммерческий
| |
|
|
|
| |
Пост N: 1962
Зарегистрирован: 20.02.11
|
|
Отправлено: 15.10.23 19:37. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Ваши комментарии на тему актуальности этой библиотеки приветствуются... |
| Григорий, какие могут быть комментарии, конечно расширение любого функционала всегда востребовано. Я к базам MySQL через ODBC лезу, конечно интересно и другие варианты пощупать
| |
|
|
| moderator
|
Пост N: 2205
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.10.23 21:11. Заголовок: Haz пишет: расширен..
Haz пишет: цитата: | расширение любого функционала всегда востребовано |
| Благодарю за комментарий Дело в том, что мне также пришлось править код Минигуи, поскольку команда EDIT EXTENDED вылетала при выходе из просмотра таблицы, открытой с помощью SQLRDD
| |
|
|
| moderator
|
Пост N: 2206
Зарегистрирован: 11.02.10
|
|
Отправлено: 20.10.23 13:43. Заголовок: Всем кому это интересно
Еще один небольшой пример для тестирования SQLRDD, адаптированный для Минигуи: /* * SQLRDD database info demo * Copyright (c) 2008 - Marcelo Lombardo <lombardo@uol.com.br> * All Rights Reserved */ #define _HMG_OUTLOG #include <minigui.ch> #include "sqlrdd.ch" #include "dbinfo.ch" #define RECORDS_IN_TEST 100 FIELD CODE_ID, DAYS FUNCTION MAIN( cRdd, cDsn ) local aStruct := {{"CODE_ID","C",8,0 },{"CARDID","C",1,0},{"DESCR","C",50,0},{"PERCENT","N",8,2},{"DAYS","N",6,0},{"DATE_LIM","D",8,0},{"ENABLE","L",1,0},{"OBS","M",10,0}, {"VALUE","N",18,6}} Local i DEFAULT cRDD := "SQLRDD" Connect( @cRDD, cDSN ) // see connect.prg ? "Connected to ", SR_GetConnectionInfo(, SQL_DBMS_NAME ), SR_GetConnectionInfo(, SQL_DBMS_VER ) ? "Creating table" dbCreate( "TEST_TABLE3", aStruct, cRDD ) USE TEST_TABLE3 via cRDD INDEX ON CODE_ID TO TBL3_INDX INDEX ON CODE_ID TAG CODE_ID FOR DAYS < 20 For i = 1 to RECORDS_IN_TEST Append Blank Replace CODE_ID with strZero( i, 5 ) Replace DESCR with dtoc( date() ) + " - " + time() Replace DAYS with (RECORDS_IN_TEST - i) Replace DATE_LIM with date() Replace ENABLE with .T. Replace OBS with "This is a memo field. Seconds since midnight : " + alltrim(str(seconds())) Next dbGoTop() ? "RDD Version :", dbInfo( DBI_RDD_VERSION ) ? "RDD Build :", dbInfo( DBI_RDD_BUILD ) ? "SR_FILE() :", sr_file( "TEST_TABLE3" ) ? "FILE() :", file( "TEST_TABLE3" ) // There is no phisical file with such name, should return .F. ? "Standard table structure" ? sr_showVector( dbStruct() ) EDIT EXTENDED DbCloseAll() ? "Drop Table :", SR_DropTable("TEST_TABLE3") RETURN NIL /*------------------------------------------------------------------------*/ #include "connect.prg" /*------------------------------------------------------------------------*/ Вывод этой программы после запуска: Connected to MYSQL NATIVE 80030 Creating table RDD Version : MGMNT 1.72 RDD Build : 15 SR_FILE() : .T. FILE() : .F. Standard table structure {{CODE_ID,C,8,0}, {CARDID,C,1,0}, {DESCR,C,50,0}, {PERCENT,N,8,2}, {DAYS,N,6,0}, {DATE_LIM,D,8,0}, {ENABLE,L,1,0}, {OBS,M,10,0}, {VALUE,N,18,6} } Drop Table : .T.
| |
|
|
| |
Пост N: 7844
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.10.23 15:42. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Еще один небольшой пример для тестирования SQLRDD, адаптированный для Минигуи: |
| В консоли будет работать SQLRDD или надо допиливать ?
| |
|
|
| moderator
|
Пост N: 2207
Зарегистрирован: 11.02.10
|
|
Отправлено: 20.10.23 16:03. Заголовок: Dima пишет: В консо..
Dima пишет: цитата: | В консоли будет работать SQLRDD |
| Будет работать Посмотри консольный пример для MySQL ниже: // SQLRDD // test with MySQL // To compile: // hbmk2 mysql2 -llibmysql #include "sqlrdd.ch" #include "inkey.ch" // Make a copy of this file and change the values below. // NOTE: the database must exist before runnning the test. #define SERVER "localhost" #define UID "root" #define PWD "password" #define DTB "dbtest" REQUEST SQLRDD REQUEST SQLEX REQUEST SR_MYSQL PROCEDURE Main() LOCAL nConnection LOCAL n LOCAL oTB LOCAL nKey setMode(25, 80) rddSetDefault("SQLRDD") nConnection := sr_AddConnection(CONNECT_MYSQL, "MySQL=" + SERVER + ";UID=" + UID + ";PWD=" + PWD + ";DTB=" + DTB) IF nConnection < 0 alert("Connection error. See sqlerror.log for details.") QUIT ENDIF sr_StartLog(nConnection) IF !sr_ExistTable("test") dbCreate("test", {{"ID", "N", 10, 0}, ; {"FIRST", "C", 30, 0}, ; {"LAST", "C", 30, 0}, ; {"AGE", "N", 3, 0}, ; {"DATE", "D", 8, 0}, ; {"MARRIED", "L", 1, 0}, ; {"VALUE", "N", 12, 2}}, "SQLRDD") ENDIF USE test EXCLUSIVE VIA "SQLRDD" IF reccount() < 100 FOR n := 1 TO 100 APPEND BLANK REPLACE ID WITH n REPLACE FIRST WITH "FIRST" + hb_ntos(n) REPLACE LAST WITH "LAST" + hb_ntos(n) REPLACE AGE WITH n + 18 REPLACE DATE WITH date() - n REPLACE MARRIED WITH iif(n / 2 == int(n / 2), .T., .F.) REPLACE VALUE WITH n * 1000 / 100 NEXT n ENDIF GO TOP oTB := TBrowseDB(0, 0, maxrow(), maxcol()) oTB:addColumn(TBColumnNew("ID", {||TEST->ID})) oTB:addColumn(TBColumnNew("FIRST", {||TEST->FIRST})) oTB:addColumn(TBColumnNew("LAST", {||TEST->LAST})) oTB:addColumn(TBColumnNew("AGE", {||TEST->AGE})) oTB:addColumn(TBColumnNew("DATE", {||TEST->DATE})) oTB:addColumn(TBColumnNew("MARRIED", {||TEST->MARRIED})) oTB:addColumn(TBColumnNew("VALUE", {||TEST->VALUE})) DO WHILE nKey != K_ESC dispbegin() DO WHILE !oTB:stabilize() ENDDO dispend() nKey := inkey(0) SWITCH nKey CASE K_UP oTB:up() EXIT CASE K_DOWN oTB:down() EXIT CASE K_LEFT oTB:left() EXIT CASE K_RIGHT oTB:right() EXIT CASE K_PGUP oTB:PageUp() EXIT CASE K_PGDN oTB:PageDown() ENDSWITCH ENDDO CLOSE DATABASE sr_StopLog(nConnection) sr_EndConnection(nConnection) RETURN
| |
|
|
| |
Пост N: 7845
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.10.23 16:07. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет:
| |
|
|
| moderator
|
Пост N: 2208
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.10.23 18:31. Заголовок: Всем кому это интересно
Попробовал переписать пример MySqlCli с использованием библиотеки SQLRDD. На картинке ниже можно увидеть результат работы этой программы:
| |
|
|
| moderator
|
Пост N: 2209
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.10.23 19:40. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | пример MySqlCli с использованием библиотеки SQLRDD |
| Если у кого-либо есть желание попробовать этот пример вживую, то я выложил его здесь. Для проверки потребуется тестовый сервер MySQL, который можно скачать с его официального сайта http://dev.mysql.com/downloads/ Заранее благодарю за отзывы
| |
|
|
| постоянный участник
|
Пост N: 4436
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.10.23 21:38. Заголовок: gfilatov2002 пишет Д..
gfilatov2002 пишет цитата: | Для проверки потребуется тестовый сервер MySQL, который можно скачать с его официального сайта |
| Правильно понимаю, ставим сервер версии 8.0.4, а пример будет использовать dll версии от 2010 года ? Очень давно не сталкивался с mysql, забылось многое. В VO для работы бралась клиентская dll из сервера той же версии
| |
|
|
| moderator
|
Пост N: 2210
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.10.23 10:02. Заголовок: SergKis пишет: став..
SergKis пишет: цитата: | ставим сервер версии 8.0.4, а пример будет использовать dll версии от 2010 года |
| Да, все правильно SergKis пишет: цитата: | для работы бралась клиентская dll из сервера той же версии |
| Можно и так. Но тогда потребуется пересобрать под эту dll соответствующую ей библиотеку libmysql.lib. Я так делаю для 64-битной MinGW-версии. P.S. Обращаю внимание, что SQLRDD будет создавать свои служебные таблицы в каждой базе данных, к которой будет обращаться программа. Поэтому я и рекомендовал создать пробный MySQL сервер для проверки библиотеки SQLRDD.
| |
|
|
|
| постоянный участник
|
Пост N: 4437
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.10.23 14:01. Заголовок: gfilatov2002 пишет S..
gfilatov2002 пишет цитата: | SQLRDD будет создавать свои служебные таблицы в каждой базе данных, к которой будет обращаться программа. |
| Для чужого сервера это так же будет проделываться ? Не уверен, что админ разрешит это проделывать.
| |
|
|
| moderator
|
Пост N: 2211
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.10.23 14:08. Заголовок: SergKis пишет: Для ..
SergKis пишет: цитата: | Для чужого сервера это так же будет проделываться ? |
| Угу SergKis пишет: цитата: | Не уверен, что админ разрешит это проделывать |
| Полностью с ним согласен. Поэтому в обычном режиме программа должна работать только со своей базой MySQL, которую она сама создала. Но mysqlcli может обращаться к любой базе, поэтому я и сделал заранее такое предупреждение о тестовом сервере...
| |
|
|
| постоянный участник
|
Пост N: 4438
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.10.23 16:04. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет цитата: | Поэтому в обычном режиме программа должна работать только со своей базой MySQL, которую она сама создала |
| Для FireBird, где из основной базы через gbak.exe получают копию ее и на др. сервере восстанавливают через нее, для дальнейшей информационной обработки, думаю SQLRDD должна подойти на все 100%. Интересно, как надо будет читать таблицу с ~10 000 000 записями ? Доступны ли описания и view из основной системы ? Или надо свои делать ? PS MySql с таблицами InnoDb убрали из работы оч. давно ~2004-2006 гг. (редко, но пропадали записи) ушел на FireBird, а потом на LetoDb
| |
|
|
| moderator
|
Пост N: 2212
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.10.23 16:22. Заголовок: SergKis пишет: Или ..
SergKis пишет: Надо делать свои. Кстати, для выборки можно использовать DBF - есть функция SR_SetRDDTemp().
| |
|
|
| |
Пост N: 143
Зарегистрирован: 24.04.13
|
|
Отправлено: 21.12.23 13:48. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Будет работать Посмотри консольный пример для MySQL ниже: |
| Что-то не собирается, libmysql.lib с гитхаба lib\bc5 ?
| |
|
Ответов - 36
, стр:
1
2
All
[только новые]
|
|
|