⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nfxput.ec

📁 封装了数据库的基本操作
💻 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 sqltypes.h;$include decimal.h;$include "dblib.h";$include "nfxprv.h";#define INFORMIX70/*===========================================================================*//* Public Funciton - Put Data To Buffer                                      *//*---------------------------------------------------------------------------*/int PutDataBuffer( Descriptor, Buffer )EXEC SQL BEGIN DECLARE SECTION;char *Descriptor;char *Buffer;EXEC SQL END DECLARE SECTION;{  int r, p;  EXEC SQL BEGIN DECLARE SECTION;  char n[81];  long c, i, t, l, f, g;  union{    short *s;    long *l;    float *f;    double *d;    char *c;  } ValPtr;  dec_t DecVal;  EXEC SQL END DECLARE SECTION;  EXEC SQL GET DESCRIPTOR :Descriptor :c = COUNT;  if( ( r = sqlca.sqlcode ) == SQLOK ){    p = 0;    for( i = 1; i <= c; i ++ ){      EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i          :t = TYPE, :l = LENGTH, :f = NULLABLE, :n = NAME;      if( ( r = sqlca.sqlcode ) != SQLOK )        break;      switch( t ){      case SQLVCHAR:      case SQLCHAR:        p = StructOffset( p, sizeof( char ) );        ValPtr.c = ( char * ) ( Buffer + p );        p += l + 1;        if( f == 0 && ValPtr.c[0] == 0 ){          ValPtr.c[0] = ' ';          ValPtr.c[1] = 0;          g = 1;        }        else          g = 0;#ifdef INFORMIX70        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :ValPtr.c;#else        l++;        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :ValPtr.c,                                                     TYPE = :t,                                                     LENGTH = :l;        l--;        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i LENGTH = :l;#endif        r = sqlca.sqlcode;        if( g != 0 )          ValPtr.c[0] = 0;        break;      case SQLSMINT:        p = StructOffset( p, sizeof( short ) );        ValPtr.s = ( short * ) ( Buffer + p );        p += sizeof( short );        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.s;/*                                                     TYPE = :t,                                                     LENGTH = :l;*/        r = sqlca.sqlcode;        break;      case SQLINT:      case SQLSERIAL:      case SQLDATE:        p = StructOffset( p, sizeof( long ) );        ValPtr.l = ( long * ) ( Buffer + p );        p += sizeof( long );        if( t==SQLSERIAL )          *ValPtr.l = 0L;        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.l;        r = sqlca.sqlcode;        break;      case SQLSMFLOAT:        p = StructOffset( p, sizeof( float ) );        ValPtr.f = ( float * ) ( Buffer + p );        p += sizeof( float );        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.f;        r = sqlca.sqlcode;        break;      case SQLFLOAT:        p = StructOffset( p, sizeof( double ) );        ValPtr.d = ( double * ) ( Buffer + p );        p += sizeof( double );        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.d;        r = sqlca.sqlcode;        break;      case SQLDECIMAL:      case SQLMONEY:        p = StructOffset( p, sizeof( double ) );        ValPtr.d = ( double * ) ( Buffer + p );        deccvdbl( *ValPtr.d, &DecVal );        p += sizeof( double );        EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :DecVal;        r = sqlca.sqlcode;        break;      default:        r = -1;      }      if( r != 0 )        break;    }  }  return( r );}/*****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -