Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Cocina Casera Cocina PowerCOBOL
Cocina PowerCOBOL Rutinas y ejemplos codificados por nuestros foreros.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Noticia] Cobol & IA JCantero COBOL - General 2 13 de diciembre de 2023 14:37
[Compilador] Powercobol & Windows 11 Joseg PowerCOBOL (ActiveX, v4 - v11) 18 14 de octubre de 2021 15:45
[Compilador] Json & Powercobol Joseg PowerCOBOL (ActiveX, v4 - v11) 1 12 de abril de 2021 14:13
[Compilador] Powercobol & ADO Joseg PowerCOBOL (ActiveX, v4 - v11) 11 14 de julio de 2018 16:51
[Compilador] Fujitsu Cobol & Sqlite Joseg PowerCOBOL (ActiveX, v4 - v11) 12 7 de febrero de 2018 09:08

Respuesta

  #1
Antiguo 2 de junio de 2023, 14:13
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243
Tableta PowerCobol & Class & sqlite
3 Inactivo Inactivo

Sqlite3Class.cbl es un envoltorio que permite integrar el motor de base de datos de sqlite con las aplicaciones de PowerCobol.
Su implementacion es muy sencilla descargar Binarios precompilados para Windows para su version 32 bits (sqlite3.dll) no hace falta registrarla.
1 - Copiar Sqlite3.dll en la carpeta del proyecto
2 - Agregar la funciones de la libreria en el Archivo COBOL85
3 - Agregar la clase en la opcion Insertar File en el modulo
4 - Crear el Objects sqlite3 y genera la referencia al objeto
Código COBOL:
  1.     REPOSITORY
  2.     CLASS  Sqlite3  
Código COBOL:
  1.  WORKING-STORAGE
  2.     01  OBJSQLITE3           OBJECT REFERENCE SQLITE3   IS GLOBAL. *>Instance CLASS
Código COBOL:
  1.  invoke Sqlite3 "NEW" returning ObjSqlite3

5 - Luego puede invocar cualquier metodo de la clase
Código COBOL:
  1.    *> libversion
  2.      invoke objSqlite3 "LibVersionSql"  returning  BD-TEXT.  
6 - Al finalizar destruir la instancia del objeto (set objSqlite3 to Null).
Class
Código COBOL:
  1. *> ----------------------------------------------------------------------------------
  2. *> libreria sqlite3.dll
  3. *> cargar las funciones en el archivo cobol85.cbr
  4. *> Fecha 20-05-2023
  5. *> Sqlite3Class.cbl
  6. *> Version 1.00
  7. *> Author Osvaldo Urbano [b]@fastpho[/b]
  8. *> Source Fujitsu FJBASE CLASS
  9. *> ----------------------------------------------------------------------------------
  10.  
  11.  CLASS-ID.  Sqlite3 INHERITS FJBASE.
  12.  ENVIRONMENT    DIVISION.
  13.  CONFIGURATION    SECTION.
  14.  REPOSITORY.
  15.       CLASS FJBASE.            
  16. *      
  17.  OBJECT.
  18.  
  19.  DATA DIVISION.
  20.  WORKING-STORAGE SECTION.
  21.  01 ValorVers         PIC X(4) PROPERTY VALUE "1.00". *>Version de la Clase
  22.  01 pSqlite3          PIC 9(9) COMP-5 PROPERTY WITH NO SET. *>Handle de la BD - Propiedad Solo GET
  23.  01 pStmt3            PIC 9(9) COMP-5 PROPERTY WITH NO SET. *>Puntero Statement - Propiedad Solo GET
  24.  
  25.  PROCEDURE DIVISION.
  26. *> ----------------------------------------------------------------------------------
  27. *> object Sqlite3
  28. *> ----------------------------------------------------------------------------------
  29. *> ----------------------------------------------------------------------------------
  30. *>  property 's
  31. *> ----------------------------------------------------------------------------------
  32. *========================================================================
  33. *>
  34. *>  Property GET HANDLE = puntero DE LA BD
  35. *>
  36.  
  37.  METHOD-ID. GET PROPERTY HANDLE.
  38.  DATA DIVISION.
  39.  LINKAGE SECTION.
  40.  01 PROP-HANDLE-VALOR PIC 9(9) COMP-5.
  41.  PROCEDURE DIVISION RETURNING PROP-HANDLE-VALOR.
  42.      COMPUTE   PROP-HANDLE-VALOR = pSqlite3.
  43.  END METHOD.
  44. *========================================================================
  45. *========================================================================
  46. *>
  47. *>  Property GET FIELDCOUNT =  Cantidad de columnas despues del select
  48. *>
  49.  
  50.  METHOD-ID. GET PROPERTY FIELDCOUNT.
  51.  DATA DIVISION.
  52.  LINKAGE SECTION.
  53.  01 PROP-VALOR PIC 9(9) COMP-5.
  54.  PROCEDURE DIVISION RETURNING PROP-VALOR.
  55.      INVOKE SELF "ColumnaCountSql" RETURNING PROP-VALOR.
  56.  
  57.  END METHOD.
  58. *========================================================================
  59. *> ----------------------------------------------------------------------------------
  60. *>  method's
  61. *> ----------------------------------------------------------------------------------
  62. *========================================================================
  63. *>
  64. *>  Metodo OpenSql
  65. *>
  66.  METHOD-ID. OpenSql.
  67.  DATA DIVISION.
  68.  WORKING-STORAGE SECTION.
  69.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
  70.  01  BD-HANDLE                      PIC 9(9) COMP-5. *>Handle de la BD  
  71. *========================================================================
  72. *  sqlite3_open  
  73. *
  74. *  # INPUT: BD-FILE-NAME  
  75. *  # OUTPUT: BD-HANDLE , BD-STATUS
  76. *========================================================================
  77.  LINKAGE SECTION.
  78.  01  BD-FILE-NAME                   PIC X(50).       *>Nombre de la BD
  79.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
  80.  PROCEDURE DIVISION USING BD-FILE-NAME  RETURNING BD-STATUS.
  81.  
  82.      MOVE "sqlite3_open"         TO FUNCIONES-SQLITE3-LIB.    
  83.      CALL FUNCIONES-SQLITE3-LIB    WITH  STDCALL  LINKAGE
  84.               USING      
  85.                          BY REFERENCE BD-FILE-NAME
  86.                          BY REFERENCE BD-HANDLE
  87.               RETURNING  BD-STATUS
  88.  
  89.      END-CALL.    
  90.      MOVE BD-HANDLE TO pSqlite3. *> expongo el handler como property
  91.                                 *> para todos los metodos.
  92.      
  93.  END METHOD OpenSql.
  94. *========================================================================
  95. *========================================================================
  96. *>
  97. *>  Metodo CloseSql
  98. *>
  99.  METHOD-ID. CloseSql.
  100.  DATA DIVISION.
  101.  WORKING-STORAGE SECTION.
  102.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
  103. *========================================================================
  104. *  sqlite3_close  
  105. *
  106. *  # INPUT:            
  107. *  # OUTPUT: BD-STATUS
  108. *========================================================================
  109.  LINKAGE SECTION.
  110.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
  111.  PROCEDURE DIVISION  RETURNING BD-STATUS.
  112.  
  113.      MOVE "sqlite3_close"         TO FUNCIONES-SQLITE3-LIB.    
  114.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  115.               USING      
  116.                          BY VALUE pSqlite3
  117.               RETURNING  BD-STATUS
  118.  
  119.      END-CALL.    
  120.      
  121.  END METHOD CloseSql.
  122. *========================================================================
  123. *========================================================================
  124. *>
  125. *>  Metodo Open2Sql
  126. *>
  127.  METHOD-ID. Open2Sql.
  128.  DATA DIVISION.
  129.  WORKING-STORAGE SECTION.
  130.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
  131.  01  BD-HANDLE                      PIC 9(9) COMP-5. *>Handle de la BD  
  132. *========================================================================
  133. *  sqlite3_open_v2  
  134. *
  135. *  # INPUT: BD-FILE-NAME   BD-OPEN-TYPE
  136. *  # OUTPUT: BD-HANDLE , BD-STATUS
  137. *========================================================================
  138.  LINKAGE SECTION.
  139.  01  BD-FILE-NAME                   PIC X(50).       *>Nombre de la BD
  140.  01  BD-OPEN-TYPE                   PIC 9(9) COMP-5. *>R RW SC
  141.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
  142.  PROCEDURE DIVISION USING  BD-FILE-NAME , BD-OPEN-TYPE RETURNING BD-STATUS.
  143.  
  144.      MOVE "sqlite3_open_v2"         TO FUNCIONES-SQLITE3-LIB.    
  145.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  146.               USING      
  147.                          BY REFERENCE BD-FILE-NAME
  148.                          BY REFERENCE BD-HANDLE
  149.                          BY VALUE BD-OPEN-TYPE
  150.                          BY VALUE 0
  151.               RETURNING  BD-STATUS
  152.  
  153.      END-CALL.    
  154.      MOVE BD-HANDLE TO pSqlite3. *> expongo el handler como property
  155.                                 *> para todos los metodos.
  156.  
  157.  END METHOD Open2Sql.
  158. *========================================================================
  159. *========================================================================
  160. *>
  161. *>  Metodo Close2Sql
  162. *>
  163.  METHOD-ID. Close2Sql.
  164.  DATA DIVISION.
  165.  WORKING-STORAGE SECTION.
  166.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
  167. *========================================================================
  168. *  sqlite3_close_v2  
  169. *
  170. *  # INPUT:  
  171. *  # OUTPUT: BD-STATUS
  172. *========================================================================
  173.  LINKAGE SECTION.
  174.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
  175.  PROCEDURE DIVISION     RETURNING BD-STATUS.
  176.  
  177.  
  178.      MOVE "sqlite3_close_v2"         TO FUNCIONES-SQLITE3-LIB.    
  179.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  180.               USING      
  181.                          BY VALUE pSqlite3
  182.               RETURNING  BD-STATUS
  183.  
  184.      END-CALL.    
  185.      
  186.  END METHOD Close2Sql.
  187. *========================================================================
  188. *========================================================================
  189. *>
  190. *>  Metodo LibversionSql
  191. *>
  192.  METHOD-ID. LibversionSql.
  193.  DATA DIVISION.
  194.  WORKING-STORAGE SECTION.
  195.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
  196.  01  BD-TEXT-POINTER                POINTER.  
  197. *========================================================================
  198. *  sqlite3_libversion  
  199. *
  200. *                    
  201. *  # OUTPUT: BD-TEXT
  202. *========================================================================
  203.  LINKAGE SECTION.
  204.  01  BD-TEXT                        PIC X any length.
  205.  77  sqlite3-version-text           PIC X(256).
  206.  PROCEDURE DIVISION  RETURNING BD-TEXT.
  207.  
  208.      MOVE "sqlite3_libversion"   TO FUNCIONES-SQLITE3-LIB.
  209.      CALL  FUNCIONES-SQLITE3-LIB  WITH  STDCALL LINKAGE
  210.             RETURNING  BD-TEXT-POINTER
  211.      END-CALL.
  212.  
  213.        SET ADDRESS OF sqlite3-version-text TO BD-TEXT-POINTER.
  214.      STRING
  215.         sqlite3-version-text DELIMITED BY LOW-VALUE
  216.             INTO BD-TEXT
  217.        END-STRING.
  218.        SET BD-TEXT-POINTER TO NULL.
  219.  
  220.      
  221.  END METHOD LibversionSql.
  222. *========================================================================
  223. *========================================================================
  224. *>
  225. *>  Metodo ColumnaCountSql
  226. *>
  227.  METHOD-ID. ColumnaCountSql.
  228.  DATA DIVISION.
  229.  WORKING-STORAGE SECTION.
  230.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
  231. *========================================================================
  232. *  sqlite3_column_count  
  233. *
  234. *  # INPUT: BD-HANDLE-STMT
  235. *  # OUTPUT: BD-COLUMNA-CANTIDAD
  236. *========================================================================
  237.  LINKAGE SECTION.
  238.  01  BD-COLUMNA-CANTIDAD            PIC 9(9) COMP-5. *>Cantidad de Columnas de la BD
  239.  PROCEDURE DIVISION     RETURNING BD-COLUMNA-CANTIDAD.
  240.  
  241.      MOVE "sqlite3_column_count"         TO FUNCIONES-SQLITE3-LIB.    
  242.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  243.               USING      
  244.                          BY VALUE   pStmt3
  245.               RETURNING  BD-COLUMNA-CANTIDAD
  246.  
  247.      END-CALL.
  248.  
  249.      
  250.  END METHOD ColumnaCountSql.
  251. *========================================================================
  252. *========================================================================
  253. *>
  254. *>  Metodo PrepareSql
  255. *>
  256.  METHOD-ID. PrepareSql.
  257.  DATA DIVISION.
  258.  WORKING-STORAGE SECTION.
  259.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  260.  01  BD-SQL-STRING-LENGHT           PIC S9(9) COMP-5.
  261.  01  BD-HANDLE-STMT                 PIC 9(9) COMP-5.  *>Puntero Statement
  262.  01  BD-STMT-PTR REDEFINES BD-HANDLE-STMT POINTER.    *>Redefines del Puntero Statement
  263. *========================================================================
  264. *  sqlite3_prepare_v2  
  265. *
  266. *  # INPUT:  BD-SQL-QUERY
  267. *  # OUTPUT: BD-STATUS
  268. *========================================================================
  269.  LINKAGE SECTION.
  270.  01  BD-SQL-QUERY                   PIC X(256).       *> string sql  
  271.  01  BD-STATUS                      PIC 9(9) COMP-5.  *>Estado de la BD
  272.  PROCEDURE DIVISION USING   BD-SQL-QUERY  RETURNING BD-STATUS.
  273.  
  274.      MOVE "sqlite3_prepare_v2"         TO FUNCIONES-SQLITE3-LIB.    
  275.  
  276.      MOVE ZEROS TO BD-SQL-STRING-LENGHT.
  277.      INSPECT BD-SQL-QUERY TALLYING BD-SQL-STRING-LENGHT FOR  CHARACTERS BEFORE INITIAL X"00".
  278.  
  279.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  280.               USING
  281.                          BY VALUE     pSqlite3
  282.                          BY CONTENT   BD-SQL-QUERY
  283.                        BY VALUE     BD-SQL-STRING-LENGHT
  284.                          BY REFERENCE BD-STMT-PTR
  285.                    BY VALUE     0
  286.               RETURNING  BD-STATUS
  287.  
  288.      END-CALL.
  289.     *> DEVUELVE BD-STMT-PTR  
  290.      MOVE BD-HANDLE-STMT TO pStmt3. *> expongo el ptr statment como property
  291.                                    *> para todos los metodos.
  292.    
  293.  END METHOD PrepareSql.
  294. *========================================================================
  295. *========================================================================
  296. *>
  297. *>  Metodo FinalizeSql
  298. *>
  299.  METHOD-ID. FinalizeSql.
  300.  DATA DIVISION.
  301.  WORKING-STORAGE SECTION.
  302.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  303. *========================================================================
  304. *  sqlite3_finalize  
  305. *
  306. *  # INPUT:
  307. *  # OUTPUT:   BD-STATUS
  308. *========================================================================
  309.  LINKAGE SECTION.
  310.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
  311.  PROCEDURE DIVISION   RETURNING BD-STATUS.
  312.  
  313.      MOVE "sqlite3_finalize"      TO FUNCIONES-SQLITE3-LIB.    
  314.      
  315.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  316.               USING      
  317.                          BY VALUE   pStmt3
  318.               RETURNING  BD-STATUS
  319.  
  320.      END-CALL.
  321.     *>DEVUELVE BD-STATUS
  322.      
  323.  END METHOD FinalizeSql.
  324. *========================================================================
  325. *========================================================================
  326. *>
  327. *>  Metodo StepSql
  328. *>
  329.  METHOD-ID. StepSql.
  330.  DATA DIVISION.
  331.  WORKING-STORAGE SECTION.
  332.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  333. *========================================================================
  334. *  sqlite3_step  
  335. *
  336. *  # INPUT:
  337. *  # OUTPUT: BD-STATUS
  338. *========================================================================
  339.  LINKAGE SECTION.
  340.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
  341.  PROCEDURE DIVISION  RETURNING BD-STATUS.
  342.      
  343.      MOVE "sqlite3_step"          TO FUNCIONES-SQLITE3-LIB.    
  344.      CALL     FUNCIONES-SQLITE3-LIB  WITH STDCALL LINKAGE
  345.               USING      
  346.                          BY VALUE   pStmt3
  347.               RETURNING  BD-STATUS
  348.  
  349.      END-CALL.
  350.     *>DEVUELVE BD-STATUS
  351.      
  352.  END METHOD StepSql.
  353. *========================================================================
  354. *========================================================================
  355. *>
  356. *>  Metodo ErrMsgSql
  357. *>
  358.  METHOD-ID. ErrMsgSql.
  359.  DATA DIVISION.
  360.  WORKING-STORAGE SECTION.
  361.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  362.  01  BD-SQL-ERROR                   POINTER.
  363. *========================================================================
  364. *  sqlite3_errmsg  
  365. *
  366. *  # INPUT: BD-HANDLE
  367. *  # OUTPUT: BD-TEXT
  368. *========================================================================
  369.  LINKAGE SECTION.
  370.  01  BD-TEXT                        PIC X(256).
  371.  77  sqlite3-error-text             PIC X(256).
  372.  PROCEDURE DIVISION   RETURNING BD-TEXT.
  373.      
  374.      MOVE "sqlite3_errmsg"   TO FUNCIONES-SQLITE3-LIB.
  375.      MOVE SPACES             TO BD-TEXT.
  376.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  
  377.               USING    
  378.                         BY VALUE pSqlite3
  379.               RETURNING BD-SQL-ERROR
  380.  
  381.      END-CALL.
  382.  
  383.        SET ADDRESS OF sqlite3-error-text TO BD-SQL-ERROR.
  384.      STRING
  385.         sqlite3-error-text DELIMITED BY LOW-VALUE
  386.             INTO BD-TEXT
  387.        END-STRING.
  388.        SET BD-SQL-ERROR TO NULL.
  389.        *>DEVUELVE BD-TEXT
  390.      
  391.  END METHOD ErrMsgSql.
  392. *========================================================================
  393. *========================================================================
  394. *>
  395. *>  Metodo ExecuteSql
  396. *>
  397.  METHOD-ID. ExecuteSql.
  398.  DATA DIVISION.
  399.  WORKING-STORAGE SECTION.
  400.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  401. *========================================================================
  402. *  sqlite3_exec    
  403. *
  404. *  # INPUT: BD-SQL-QUERY
  405. *  # OUTPUT: BD-STATUS
  406. *========================================================================
  407.  LINKAGE SECTION.
  408.  01  BD-SQL-QUERY                   PIC X(256).       *>string sql (Create , Insert , Delete , Update )
  409.  01  BD-STATUS                      PIC 9(9) COMP-5.  *>Estado de la BD
  410.  PROCEDURE DIVISION USING BD-SQL-QUERY RETURNING BD-STATUS.
  411.      
  412.      MOVE "sqlite3_exec"         TO FUNCIONES-SQLITE3-LIB.    
  413.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  414.               USING
  415.                         BY VALUE   pSqlite3
  416.                         BY CONTENT BD-SQL-QUERY
  417.                       BY VALUE 0
  418.                   BY VALUE 0
  419.                   BY VALUE 0
  420.               RETURNING BD-STATUS
  421.  
  422.      END-CALL.
  423.     *>DEVUELVE BD-STATUS
  424.      
  425.  END METHOD ExecuteSql.
  426. *========================================================================
  427. *========================================================================
  428. *>
  429. *>  Metodo LastInsertIDSql
  430. *>
  431.  METHOD-ID. LastInsertIDSql.
  432.  DATA DIVISION.
  433.  WORKING-STORAGE SECTION.
  434.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  435. *========================================================================
  436. *  sqlite3_last_insert_rowid    
  437. *
  438. *  # INPUT:            
  439. *  # OUTPUT: BD-FILA-ID
  440. *========================================================================
  441.  LINKAGE SECTION.
  442.  01  BD-FILA-ID                     PIC 9(9) COMP-5. *> ultima fila insert
  443.  PROCEDURE DIVISION   RETURNING BD-FILA-ID.
  444.      
  445.      MOVE "sqlite3_last_insert_rowid"         TO FUNCIONES-SQLITE3-LIB.    
  446.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  447.               USING      
  448.                          BY VALUE   pSqlite3
  449.               RETURNING  BD-FILA-ID
  450.  
  451.      END-CALL.
  452.     *>DEVUELVE BD-FILA-ID
  453.      
  454.  END METHOD LastInsertIDSql.
  455. *========================================================================
  456. *========================================================================
  457. *>
  458. *>  Metodo ColumnaInt
  459. *>
  460.  METHOD-ID. ColumnaInt.
  461.  DATA DIVISION.
  462.  WORKING-STORAGE SECTION.
  463.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  464. *========================================================================
  465. *  sqlite3_column_int    
  466. *
  467. *  # INPUT: BD-HANDLE-STMT BD-COLUMNA-NUMERO
  468. *  # OUTPUT:   BD-INT
  469. *========================================================================
  470.  LINKAGE SECTION.
  471.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
  472.  01  BD-INT                         PIC 9(9) COMP-5.    
  473.  PROCEDURE DIVISION USING    BD-COLUMNA-NUMERO RETURNING BD-INT.
  474.      
  475.      MOVE "sqlite3_column_int"         TO FUNCIONES-SQLITE3-LIB.    
  476.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  477.               USING        BY VALUE   pStmt3
  478.                            BY VALUE   BD-COLUMNA-NUMERO
  479.               RETURNING  BD-INT
  480.  
  481.      END-CALL.
  482.     *>DEVUELVE BD-INT
  483.      
  484.  END METHOD ColumnaInt.
  485. *========================================================================
  486. *========================================================================
  487. *>
  488. *>  Metodo ColumnaText
  489. *>
  490.  METHOD-ID. ColumnaText.
  491.  DATA DIVISION.
  492.  WORKING-STORAGE SECTION.
  493.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  494.  01  BD-TEXT-POINTER                POINTER.
  495. *========================================================================
  496. *  sqlite3_column_text    
  497. *
  498. *  # INPUT: BD-HANDLE-STMT BD-COLUMNA-NUMERO
  499. *  # OUTPUT:   BD-TEXT
  500. *========================================================================
  501.  LINKAGE SECTION.
  502.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
  503.  01  BD-TEXT                        PIC X(256).
  504.  01  sqlite3-value-text             PIC X(256).
  505.  PROCEDURE DIVISION USING  BD-COLUMNA-NUMERO RETURNING BD-TEXT.
  506.      
  507.      MOVE "sqlite3_column_text"    TO FUNCIONES-SQLITE3-LIB.    
  508.      MOVE SPACES                   TO BD-TEXT.
  509.      
  510.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  511.               USING
  512.                          BY VALUE   pStmt3
  513.                          BY VALUE   BD-COLUMNA-NUMERO
  514.               RETURNING  BD-TEXT-POINTER
  515.      END-CALL.          
  516.      SET ADDRESS OF sqlite3-value-text TO BD-TEXT-POINTER.
  517.      STRING
  518.             sqlite3-value-text DELIMITED BY LOW-VALUE
  519.             into BD-TEXT
  520.      END-STRING.
  521.      SET  BD-TEXT-POINTER TO NULL.
  522.     *>DEVUELVE BD-TEXT
  523.      
  524.  END METHOD ColumnaText.
  525. *========================================================================
  526. *========================================================================
  527. *>
  528. *>  Metodo ColumnaType
  529. *>
  530.  METHOD-ID. ColumnaType.
  531.  DATA DIVISION.
  532.  WORKING-STORAGE SECTION.
  533.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  534. *========================================================================
  535. *  sqlite3_column_type    
  536. *
  537. *  # INPUT:    BD-COLUMNA-NUMERO
  538. *  # OUTPUT:   BD-COLUMNA-TIPO
  539. *========================================================================
  540.  LINKAGE SECTION.
  541.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
  542.  01  BD-COLUMNA-TIPO                PIC 9(4) COMP-5.    
  543.  PROCEDURE DIVISION USING  BD-COLUMNA-NUMERO RETURNING BD-COLUMNA-TIPO.
  544.  
  545.      MOVE "sqlite3_column_type"    TO FUNCIONES-SQLITE3-LIB.    
  546.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  547.               USING        
  548.                         BY VALUE   pStmt3
  549.                         BY VALUE   BD-COLUMNA-NUMERO
  550.               RETURNING BD-COLUMNA-TIPO  
  551.      END-CALL.          
  552.     *>DEVUELVE BD-COLUMNA-TIPO.    
  553.      
  554.  END METHOD ColumnaType.
  555. *========================================================================
  556. *========================================================================
  557. *>
  558. *>  Metodo ColumnaName
  559. *>
  560.  METHOD-ID. ColumnaName.
  561.  DATA DIVISION.
  562.  WORKING-STORAGE SECTION.
  563.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
  564.  01  BD-COLUMNA-POINTER             POINTER.
  565. *========================================================================
  566. *  sqlite3_column_name    
  567. *
  568. *  # INPUT:    BD-COLUMNA-NUMERO
  569. *  # OUTPUT:   BD-COLUMNA-NOMBRE
  570. *========================================================================
  571.  LINKAGE SECTION.
  572.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
  573.  01  BD-COLUMNA-NOMBRE              PIC X(256).
  574.  01  sqlite3-value-text             PIC X(256).
  575.  PROCEDURE DIVISION USING   BD-COLUMNA-NUMERO RETURNING BD-COLUMNA-NOMBRE.
  576.  
  577.      MOVE "sqlite3_column_name"    TO FUNCIONES-SQLITE3-LIB.    
  578.      MOVE SPACES                   TO BD-COLUMNA-NOMBRE.
  579.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  580.               USING    
  581.                         BY VALUE   pStmt3
  582.                         BY VALUE   BD-COLUMNA-NUMERO
  583.               RETURNING BD-COLUMNA-POINTER
  584.  
  585.      END-CALL.
  586.  
  587.      SET ADDRESS OF sqlite3-value-text TO BD-COLUMNA-POINTER.
  588.      STRING
  589.             sqlite3-value-text DELIMITED BY LOW-VALUE
  590.             INTO BD-COLUMNA-NOMBRE
  591.      END-STRING.
  592.      SET  BD-COLUMNA-POINTER TO NULL.
  593.     *>DEVUELVE BD-COLUMNA-NOMBRE.      
  594.  END METHOD ColumnaName.
  595. *========================================================================
  596. *> ----------------------------------------------------------------------
  597. *> END OBJECT Sqlite3
  598. *> ----------------------------------------------------------------------
  599.  END OBJECT.
  600.  END CLASS Sqlite3.
Código COBOL:
  1.         *> abro sql    
  2.      MOVE "escuela.db"  & X"00"    TO BD-FILE-NAME.    
  3.      MOVE 2  TO BD-OPEN-TYPE.
  4.      invoke objSqlite3 "Open2Sql" using BD-FILE-NAME , BD-OPEN-TYPE returning  BD-STATUS.  
  5.     *>prepare
  6.      MOVE "select * from estudiante" & X"00" TO BD-SQL-QUERY.
  7.      invoke objSqlite3 "PrepareSql" USING     BD-SQL-QUERY    returning  BD-STATUS.
  8.     *>Record row
  9.      perform with no limit        
  10.          invoke objSqlite3 "StepSql" returning BD-STATUS *> next row
  11.        *>Get id
  12.              invoke objSqlite3 "ColumnaInt" using CAMPO-ID returning BD-INT
  13.              MOVE BD-INT TO LINEA-ID
  14.             *>Get nombre
  15.                invoke objSqlite3 "ColumnaText" using CAMPO-NOMBRE returning BD-TEXT
  16.                MOVE BD-TEXT TO LINEA-NOMBRE
  17.             *>Get edad
  18.                invoke objSqlite3 "ColumnaInt" using CAMPO-EDAD returning BD-INT
  19.                MOVE BD-INT TO LINEA-EDAD
  20.             *>Get altura
  21.                invoke objSqlite3 "ColumnaText" using CAMPO-ALTURA returning BD-TEXT
  22.                MOVE BD-TEXT TO LINEA-ALTURA
  23.               COMPUTE ROWNO = ROWNO + 1
  24.               MOVE LINEA-ID     TO "Text" OF "TableCells"(ROWNO 1) OF CmTable1
  25.               MOVE LINEA-NOMBRE TO "Text" OF "TableCells"(ROWNO 2) OF CmTable1
  26.               MOVE LINEA-EDAD   TO "Text" OF "TableCells"(ROWNO 3) OF CmTable1              
  27.               MOVE LINEA-ALTURA TO "Text" OF "TableCells"(ROWNO 4) OF CmTable1              
  28.              
  29.       end-perform.
De esta forma la implementacion es mas clara y la cantidad de lines es mucho menor.
Saludos...

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  clasesqlite.png
Vistas: 106
Tamaño:  17,1 KB  
Archivos Adjuntos
Tipo de Archivo: zip Pedsql.zip (10,9 KB)Descargas: 166
Tipo de Archivo: zip Sqlite3Class.zip (4,4 KB)Descargas: 136
fastpho is offline   Responder Con Cita
  #2
Antiguo 5 de junio de 2023, 10:05
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@fastpho, ¡excelente trabajo compañero!



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 6 de junio de 2023, 11:27
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 17.09.2026 18:23
Posts Posts: 401
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Fantástico trabajo. Gracias por compartir con la comunidad
Joseg is offline   Responder Con Cita
  #4
Antiguo 10 de agosto de 2023, 12:19
vhchlorine
Acabo de llegar...
Última Actividad 10.08.2023 12:19
Posts Posts: 1

Extremadamente detallado y completo. Eres un trabajador dedicado.
vhchlorine is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:45.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.