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

📄 nfxget.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";/*===========================================================================*//* Public Funciton - Get Data From Buffer                                    *//*---------------------------------------------------------------------------*/int GetDataBuffer( Descriptor, Buffer )EXEC SQL BEGIN DECLARE SECTION;char *Descriptor;char *Buffer;EXEC SQL END DECLARE SECTION;{  int r, p;  EXEC SQL BEGIN DECLARE SECTION;  long c, i, t, l, f;  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 = INDICATOR;      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 )          memset( ValPtr.c, 0, l + 1 );        else{          EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :ValPtr.c = DATA;          if( ( r = sqlca.sqlcode ) == SQLOK ){            for( l --; l >= 0; l -- )              if( ValPtr.c[l] != 0 && ValPtr.c[l] != ' ' )                break;            if( l < 0 || ValPtr.c[l] != 0 )              ValPtr.c[l + 1] = 0;          }        }        break;      case SQLSMINT:        p = StructOffset( p, sizeof( short ) );        ValPtr.s = ( short * ) ( Buffer + p );        p += sizeof( short );        if( f != 0 )          *ValPtr.s = 0;        else{          EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.s = DATA;          r = sqlca.sqlcode;        }        break;      case SQLINT:      case SQLSERIAL:      case SQLDATE:        p = StructOffset( p, sizeof( long ) );        ValPtr.l = ( long * ) ( Buffer + p );        p += sizeof( long );        if( f != 0 )          *ValPtr.l = 0;        else{          EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.l = DATA;          r = sqlca.sqlcode;        }        break;      case SQLSMFLOAT:        p = StructOffset( p, sizeof( float ) );        ValPtr.f = ( float * ) ( Buffer + p );        p += sizeof( float );        if( f != 0 )          *ValPtr.f = 0;        else{          EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.f = DATA;          r = sqlca.sqlcode;        }        break;      case SQLFLOAT:        p = StructOffset( p, sizeof( double ) );        ValPtr.d = ( double * ) ( Buffer + p );        p += sizeof( double );        if( f != 0 )          *ValPtr.d = 0;        else{          EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.d = DATA;          r = sqlca.sqlcode;        }        break;      case SQLDECIMAL:      case SQLMONEY:        p = StructOffset( p, sizeof( double ) );        ValPtr.d = ( double * ) ( Buffer + p );        p += sizeof( double );        if( f != 0 )          *ValPtr.d = 0;        else{          EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :DecVal = DATA;          if( ( r = sqlca.sqlcode ) == SQLOK )            dectodbl( &DecVal, ValPtr.d );        }        break;      default:        r = -1;      }      if( r != 0 )        break;    }  }  return( r );}/*****************************************************************************/

⌨️ 快捷键说明

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