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' ; p>
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);
}