📄 nfxtbl.ec
字号:
/*****************************************************************************//* Database Public Function For Informix *//* ------------------------------------------------------------------------- *//* Author : Shih Ho *//* Date : March 27, 1998 *//*****************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <memory.h>$include sqlca.h;$include "dblib.h";$include "nfxprv.h";/*===========================================================================*//* Local Funciton - ExecData *//*---------------------------------------------------------------------------*/static int ExecData( Table, Buffer, Part1, Part2, Num )char *Table;char *Buffer;char *Part1;char *Part2;int *Num;{ int r = -2; EXEC SQL BEGIN DECLARE SECTION; int c; char *CntCmd, *ExeCmd; char CntName[8]; char DatName[8]; char ExeName[8]; EXEC SQL END DECLARE SECTION; if( ( CntCmd = ( char * ) malloc( 180 ) ) != NULL ){ sprintf( CntCmd, "SELECT * FROM %s", Table ); strcpy( CntName, "cnt_cmd" ); if( ( c = GetFieldCount( CntCmd, CntName ) ) > 0 ){ strcpy( DatName, "dat_cmd" ); EXEC SQL ALLOCATE DESCRIPTOR :DatName WITH MAX :c; if( ( r = sqlca.sqlcode ) == SQLOK ){ EXEC SQL DESCRIBE :CntName USING SQL DESCRIPTOR :DatName; if( ( r = sqlca.sqlcode ) == SQLOK ){ if( ( ExeCmd = ( char * ) malloc( 180 ) ) == NULL ) r = -2; else{ sprintf( ExeCmd, "%s%*s%s", Part1, 2 * c - 1, "", Part2 ); SetFieldList( ExeCmd + strlen( Part1 ), c ); strcpy( ExeName, "exe_cmd" ); EXEC SQL PREPARE :ExeName FROM :ExeCmd; if( ( r = sqlca.sqlcode ) == SQLOK ){ if( ( r = PutDataBuffer( DatName, Buffer ) ) == 0 ){ EXEC SQL EXECUTE :ExeName USING SQL DESCRIPTOR :DatName; r = sqlca.sqlcode; *Num = sqlca.sqlerrd[2]; } EXEC SQL FREE :ExeName; } free( ExeCmd ); } } EXEC SQL DEALLOCATE DESCRIPTOR :DatName; } EXEC SQL FREE :CntName; } free( CntCmd ); } return( r );}/*===========================================================================*//* Public Funciton - DBTinsert *//*---------------------------------------------------------------------------*/int DBTinsert( Table, Buffer )char *Table;char *Buffer;{ int n, r = -1; char *Cmd; if( Table != NULL && Buffer != NULL ){ if( ( Cmd = ( char * ) malloc( 180 ) ) == NULL ) r = -2; else{ sprintf( Cmd, "INSERT INTO %s VALUES (", Table ); r = ExecData( Table, Buffer, Cmd, ")", &n ); free( Cmd ); } } return( r );}/*===========================================================================*//* Public Funciton - DBTdelete *//*---------------------------------------------------------------------------*/int DBTdelete( Table, Condition )char *Table;char *Condition;{ int r = -1; int s, l; char *Cmd; if( Table != NULL ){ s = strlen( Table ) + 16; if( Condition == NULL ) l = 0; else l = strlen( Condition ) + 7; if( ( Cmd = ( char * ) malloc( 180 ) ) == NULL ) r = -2; else{ if( l == 0 ) sprintf( Cmd, "DELETE FROM %s", Table ); else sprintf( Cmd, "DELETE FROM %s WHERE %s", Table, Condition ); r = DBexec( Cmd, 0 ); if( !r && !sqlca.sqlerrd[2] ) r = 100; free( Cmd ); } } return( r );}/*===========================================================================*//* Public Funciton - DBTupdate *//*---------------------------------------------------------------------------*/int DBTupdate( Table, Buffer, Condition )char *Table;char *Buffer;char *Condition;{ int r = -1; int l, n; char *Cmd1, *Cmd2; if( Table != NULL && Buffer != NULL ){ r = -2; if( Condition == NULL ) l = 5; else l = strlen( Condition ) + 12; if( ( Cmd1 = ( char * ) malloc( 180 ) ) != NULL ){ if( ( Cmd2 = ( char * ) malloc( 180 ) ) != NULL ){ sprintf( Cmd1, "UPDATE %s SET *=(", Table ); if( l == 5 ) sprintf( Cmd2, ")" ); else sprintf( Cmd2, ") WHERE %s", Condition ); r = ExecData( Table, Buffer, Cmd1, Cmd2, &n ); if ( !r && !n ) r = 100; free( Cmd2 ); } free( Cmd1 ); } } return( r );}/*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -