Hola
@Josber
Me ha surgido la necesidad ahora de tener que conectarme a un servidor apache , con la version Mysql MariaDB
estuve probando Ado de Micro (via odbc) , probe con la EXTMYSQL (directo usando como conector libmysql.dll) que paso
@Joseg, con resultados positivos en ambos casos.
Y tambien probe con la ocx que compartio
@Nitzer , con buenos resultados tambien te pongo dos ejemplos todo via odbc
Version PowerCobol 5.0
*> Lectura de Cantidad de Registros en la tabla
Código COBOL:
WORKING-STORAGE SECTION.
01 RETORNO PIC S9(9) COMP-5.
01 sql-comando pic x(8192).
01 BD-EMPRESA.
02 BDIDUSR PIC 9(09).
02 BDNOMBRE PIC X(55).
02 BDCLAVE PIC X(255).
01 Cantidad-Registros PIC S9(9) COMP-5.
PROCEDURE DIVISION.
move spaces to sql-comando.
STRING 'DRIVER={MariaDB ODBC 3.2 Driver};'
'SERVER=xxxx.com.ar;'
'Port=3306;'
'DATABASE=xxxxxxxxxxxxxxx;'
'UID=xxxxx;'
'PWD=xxxxxxxxxx;'
DELIMITED BY SIZE INTO sql-comando
END-STRING.
*> conecta
MOVE sql-comando TO "ConnectionString" OF SqlServer1.
invoke SqlServer1 "Connect" returning RETORNO.
display " RETORNO db:" , RETORNO.
*> select
move spaces to sql-comando.
move "select count(id_empresa) from empresas" to sql-comando.
INVOKE SqlServer1 "OpenQuery" USING sql-comando RETURNING RETORNO
display " RETORNO Execute:" , RETORNO.
*> record
INVOKE SqlServer1 "GETVALUE" USING 1 RETURNING Cantidad-Registros
DISPLAY "CANTIDAD DE REGISTROS:" , Cantidad-Registros
*> desconecto
INVOKE SqlServer1 "Disconnect" RETURNING RETORNO.
*> Select simple
Código COBOL:
WORKING-STORAGE SECTION.
01 RETORNO PIC S9(9) COMP-5.
01 sql-comando pic x(8192).
01 BD-EMPRESA.
02 BDIDUSR PIC 9(09).
02 BDNOMBRE PIC X(55).
02 BDCLAVE PIC X(255).
01 Cantidad-Registros PIC S9(9) COMP-5.
PROCEDURE DIVISION.
move spaces to sql-comando.
STRING 'DRIVER={MariaDB ODBC 3.2 Driver};'
'SERVER=xxxx.com.ar;'
'Port=3306;'
'DATABASE=xxxxxxxxxxxxxxx;'
'UID=xxxxx;'
'PWD=xxxxxxxxxx;'
DELIMITED BY SIZE INTO sql-comando
END-STRING.
*> conecta
MOVE sql-comando TO "ConnectionString" OF SqlServer1.
invoke SqlServer1 "Connect" returning RETORNO.
display " RETORNO db:" , RETORNO.
*> select
move spaces to sql-comando.
move "select Id_empresa , Nombre_empresa , Password_empresa from empresas" to sql-comando.
INVOKE SqlServer1 "OpenQuery" USING sql-comando RETURNING RETORNO
display " RETORNO Execute:" , RETORNO. *> si es distinto de zeros o -1 error en la select
*> loop record
PERFORM WITH NO LIMIT
INVOKE SqlServer1 "NEXT" RETURNING RETORNO
IF ISEOF OF SqlServer1 = 1 EXIT PERFORM END-IF
INVOKE SqlServer1 "GETVALUE" USING 1 RETURNING BDIDUSR
DISPLAY "EMPRESA ID:" , BDIDUSR
INVOKE SqlServer1 "GETVALUE" USING 2 RETURNING BDNOMBRE
DISPLAY "NOMBRE:" , BDNOMBRE
INVOKE SqlServer1 "GETVALUE" USING 3 RETURNING BDCLAVE
DISPLAY "CLAVE:" , BDCLAVE
END-PERFORM.
*> desconecto
INVOKE SqlServer1 "Disconnect" RETURNING RETORNO.
Saludos ..
Voy a seguir investigando y probando las tres opciones.