最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言嵌入informix基礎(chǔ)入門示例講解

 更新時間:2013年11月26日 10:41:16   作者:  
這篇文章主要介紹了C語言嵌入informix基礎(chǔ)方法,大家參考使用

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <sqlca.h>

$struct _db_person
{
    char   name[30+1];
    char   card[12+1];
    int    age;
};

char *trim(char *str)
{
    char *p, *buffer;
    int  len;

    if( NULL!=str )
    {
        len = strlen(str);
        if( len > 0 )
        {
            buffer=(char *)malloc(sizeof(char)*(len+1));
            if( NULL != buffer )
            {
                memmove(buffer, str, len);
                buffer[len]=0;

                p = buffer + len - 1;
                while( (p != buffer) && ((*p > 0x00) && (*p <= ' ')) )
                    *(p--) = 0;
                p = buffer;
                while( (*p > 0x00) && (*p <= ' ') )
                    p++;
                strcpy(str, p);
                free(buffer);
            }
        }
    }
    return str;

}

int GetData(struct _db_person *pps)
{
    char strage[20];

    memset(pps, 0, sizeof(struct _db_person));
    printf("enter name<press enter only to exit>: ");
    fgets(pps->name,sizeof(pps->name),stdin);
    trim(pps->name);
    if( strlen(pps->name) == 0 )
        return -1;
    printf("enter card no<press enter only to exit>: ");
    fgets(pps->card,sizeof(pps->card),stdin);
    trim(pps->card);
    if( strlen(pps->card) == 0 )
        return -2;
    printf("enter age<press enter only to exit>: ");
    fgets(strage,sizeof(strage),stdin);
    trim(strage);
    if( strlen(strage) == 0 )
        return -3;
    pps->age = atoi(strage);

    return 0;
}

int main(void)
{
    $struct _db_person dbps;

    $database exec01;
    if( SQLCODE != 0 )
    {
        printf("open demo1 failure,SQLCODE=%d\n",SQLCODE);
        return -1;
    }
    while( 1 )
    {
        if( GetData(&dbps)<0 )
            break;
        $insert into person(name, card, age) values($dbps.name, $dbps.card, $dbps.age);
        printf("insert data result: SQLCODE=%d\n",SQLCODE);
        $declare vcursor cursor for select name, card, age into $dbps.name, $dbps.card, $dbps.age from person;
        printf("declare vcursor result: SQLCODE=%d\n",SQLCODE);
        $open vcursor;
        printf("open vcursor result: SQLCODE=%d\n",SQLCODE);
        if( 0==SQLCODE )
        {
            while( 1 )
            {
                $fetch vcursor;
                if( 0==SQLCODE )
                {
                    printf("name=[%s],card=[%s],age=[%d]\n",dbps.name,dbps.card,dbps.age);
                }
                else
                {
                    if( SQLCODE==100 )
                        printf("fetch end!\n");
                    else
                        printf("fetch failure!SQLCODE=%d\n",SQLCODE);
                    break;
                }
            }
        }
        $close vcursor;
        $free vcursor;
    }
    $disconnect current;

    return 0;
}

程序為簡單的C中嵌入informix數(shù)據(jù)庫,源文件為.ec文件,編譯器為esql,頭文件目錄:$(INFORMIXDIR)/include,管理工具dbaccess,用法:dbaccess [dbname],dbschema,用法:dbschema [-t tabname] –d dbname [filename]

1、由預(yù)處理程序根據(jù).ec文件生成.c文件

2、由系統(tǒng)指定的編譯器將.c文件編譯為obj文件

3、由系統(tǒng)連接程序?qū)bj文件和靜態(tài)庫文件連接,生成可執(zhí)行文件

所以必須為$CC指定合適的編譯器,gcc或g++

linux下安裝好informix后添加環(huán)境變量

LD_LIBRARY_PATH=$INFORMIXDIR/lib:$/INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH;

export LD_LIBRARY_PATH;

 

編程

 

包含頭文件:EXEC SQL include “dbdef.h”;

預(yù)定義變量:EXEC SQL define MAXLEN    64;

定義變量:

    EXEC SQL BEGIN DECLARE SECTION;

        char Fname[MAXLEN+1];

    EXEC SQL END DECLARE SECTION;

打開數(shù)據(jù)庫:

    EXEC SQL connect to ‘dbname';

關(guān)閉數(shù)據(jù)庫:

    EXEC SQL disconnect current;

定義cursor

    EXEC SQL declare cursorname cursor for select……

打開cursor

    EXEC SQL open cursorname;

讀取數(shù)據(jù)

    EXEC SQL fetch cursorname;

判斷操作是否成功

    SQLCODE==0

判斷數(shù)據(jù)是否已經(jīng)結(jié)束

    if( SQLCODE==100);

 

或者用下面的變成方式:

復(fù)制代碼 代碼如下:

$include “appdef.h”;

$define MAXLEN  64;

$char Fname[MAXLEN+1];

$database dccdb;

$declare cursorname cursor for select……;

$open cursorname;

$fetch cursorname;

$close cursorname;

$free cursorname;

$disconnect current


 

下面是makefile的編寫,一定要鏈接庫函數(shù),不然會出錯

復(fù)制代碼 代碼如下:

CC=gcc
exec01: exec01.o
    esql -o exec01 -L$(INFORMIXDIR)/lib exec01.o
exec01.o:
    esql -c -I$(INFORMIXDIR)/incl/esql exec01.ec
clean:
    rm -f exec01 *.o exec01.c exec01

相關(guān)文章

  • vscode不同項目使用不同的插件的實現(xiàn)

    vscode不同項目使用不同的插件的實現(xiàn)

    本文主要介紹了vscode不同項目使用不同的插件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C/C++多參數(shù)函數(shù)參數(shù)的計算順序與壓棧順序的示例代碼

    C/C++多參數(shù)函數(shù)參數(shù)的計算順序與壓棧順序的示例代碼

    這篇文章主要介紹了C/C++多參數(shù)函數(shù)參數(shù)的計算順序與壓棧順序,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • C語言實現(xiàn)txt數(shù)據(jù)讀入內(nèi)存/CPU緩存實例詳解

    C語言實現(xiàn)txt數(shù)據(jù)讀入內(nèi)存/CPU緩存實例詳解

    這篇文章主要介紹了C語言實現(xiàn)txt數(shù)據(jù)讀入內(nèi)存/CPU緩存實例詳解的相關(guān)資料,這里對實現(xiàn)該函數(shù)進(jìn)行了代碼實現(xiàn),需要的朋友可以參考下
    2017-01-01
  • 基于C++泛型編程職工管理系統(tǒng)

    基于C++泛型編程職工管理系統(tǒng)

    這篇文章主要介紹了基于C++泛型編程職工管理系統(tǒng),前面介紹到了C++的泛型編程,并實現(xiàn)了萬能容器,不過那使用的是數(shù)組,今天呢咱帶大家實踐一下使用泛型技術(shù),結(jié)合單鏈表實現(xiàn)一個職工管理系統(tǒng),需要的朋友可以參考一下
    2022-02-02
  • C++實現(xiàn)獲取系統(tǒng)時間的方法小結(jié)

    C++實現(xiàn)獲取系統(tǒng)時間的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了使用C++實現(xiàn)獲取系統(tǒng)時間的一些常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以了解下
    2024-03-03
  • static關(guān)鍵字的作用詳解

    static關(guān)鍵字的作用詳解

    在C語言中,static的字面意思很容易把我們導(dǎo)入歧途,其實它的作用有三條。
    2013-04-04
  • C語言實現(xiàn)兩個變量值交換的三種方式

    C語言實現(xiàn)兩個變量值交換的三種方式

    兩個變量值的交換是編程中最常見的問題之一,以下將介紹三種變量的交換方式,其中第一種方式是最常用也是最實用的,后兩種方式一般只在特殊限制下使用,需要的朋友可以參考下
    2025-03-03
  • 一文帶你探索C++中類型轉(zhuǎn)換的奧秘

    一文帶你探索C++中類型轉(zhuǎn)換的奧秘

    C++?提供了四種類型轉(zhuǎn)換方式,幫助我們在不同數(shù)據(jù)類型之間進(jìn)行有效的數(shù)據(jù)傳遞和操作,這些類型轉(zhuǎn)換方式在不同的場景下有各自的優(yōu)勢和適用性,下面我們就來深入了解一下吧
    2023-10-10
  • C++string容器基本概念詳解

    C++string容器基本概念詳解

    c++相比c的一個好處就是實現(xiàn)了很多的容器和泛型算法,使得程序員的工作得到了很大的簡化,本文重點給大家介紹C++string容器基本概念講解,需要的朋友參考下吧
    2021-07-07
  • C++11實現(xiàn)字符串分割的示例

    C++11實現(xiàn)字符串分割的示例

    本文主要介紹了C++11實現(xiàn)字符串分割的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

古浪县| 永丰县| 双城市| 蒙城县| 凌海市| 普宁市| 南丹县| 台东县| 中卫市| 宁强县| 祁阳县| 南宁市| 新宁县| 乌兰察布市| 若羌县| 阜城县| 济源市| 富源县| 武陟县| 兴和县| 汉沽区| 新乡市| 米林县| 梁河县| 宜川县| 屏东县| 磐石市| 交城县| 贵定县| 五峰| 永州市| 长丰县| 广宁县| 交口县| 峨边| 常德市| 大厂| 射阳县| 政和县| 阿合奇县| 方山县|