Red de conocimiento informático - Material del sitio web - Cómo usar Cygwin para programar en Windows

Cómo usar Cygwin para programar en Windows

Utilice lenguaje C + SQL incorporado para implementar el desarrollo de DB2 en Cygwin en Windows. La introducción e instalación de gcc se analizaron en el artículo anterior; consulte

Uso de Cygwin en Windows. entorno El compilador gcc compila el programa Informix ESQ/C

Para el programa SQL incorporado de DB2, existen los siguientes pasos:

1) Escriba el programa dbconn.sqc (una conexión simple a la base de datos , consulta y ejemplo mostrados) 2) Escriba db2cmd en la línea de comando de Cygwin para iniciar una nueva ventana de línea de comando de db2

En la ventana de línea de comando de db2:

3) Precompilación

db2 prep dbconn.sqc

Generar archivo dbconn.c

4) Compilar

gcc -I"C:\Program Files\IBM\ SQLLIB \include" dbconn.c "C:\Program Files\IBM\SQLLIB\lib\db2api.lib"

Generar un archivo.exe

En el programa C gt; mencionado en el artículo Al compilar con gcc, si la ruta contiene espacios, no se analizará correctamente.

Esta vez descubrí que la ruta puede estar entre comillas dobles.

5) Ejecute a.exe, éxito

Si necesita generar un archivo de enlace externo (db2 realiza el enlace de forma predeterminada cuando realiza la precompilación)

1 )db2 prep archivo de enlace dbconn.sqc

Generar

dbconn.c, dbconn.bnd

2) Enlace manual

db2 bind dbconn .bnd

3) Asegúrese de volver a compilar después del enlace; de ​​lo contrario, se informará -818,

db2 SQL0818

¿Precompilar por la marca de tiempo generada por el programador? es diferente de la marca de tiempo en el paquete que existe en el momento de la vinculación

Apéndice 1

programa dbconn.sqc

#include

#include

#include

int main()

{

EXEC SQL INCLUDE SQLCA;

EXEC SQL COMIENZA LA SECCIÓN DE DECLARACIÓN;

char firstnme[12 1];

EXEC SQL FINALIZA LA SECCIÓN DE DECLARACIÓN;

long RetCode = SQL_RC_OK;

char ErrorMsg[1024];

EXEC SQL CONECTARSE AL USUARIO de muestra zhangjij USANDO happyday;

EXEC SQL SELECCIONE firstnme INTO: firstnme FROM empleado WHERE empno='000099'

if (sqlca.sqlcode != SQL_RC_OK)

{

RetCode = sqlaintp(ErrorMsg, sizeof(ErrorMsg), 70, amp;sqlca);

cambiar (RetCode)

{

caso -1:

printf("ERROR: Memoria insuficiente.\n");

break;

case -3:

printf("ERROR: El archivo de mensajes es inaccesible.\n"); p>

case -5:

printf("ERROR: SQLCA no válido, búfer incorrecto o longitud de búfer incorrecta especificada.\n");

break; >

predeterminado:

printf("sqlca.sqlcode=[ld], Mensaje= [s] \n", sqlca.sqlcode, ErrorMsg);

break;

}

}

printf("OK = [s] \n", primeronme

EXEC SQL DISCONNECT); ACTUAL;

retorno(0);

}