esql / c求大神帮忙啊

时间:2022-09-29 14:13:18
/* main.c */
#include <stdio.h>
#include "stru.h"
int main()
{
    data dt;
    while(1)
    {
scanf("%s",dt.jrnl);
if(strcmp(dt.jrnl,"EOF") != 0)
{
    scanf("%s",dt.no);
    scanf("%s",dt.name);
    scanf("%d",&dt.sex);
    scanf("%s",dt.amt);
    scanf("%s",dt.type);
        }
else
    break;
putdata(dt);
    }
    return 0;
}
/* stru.h  
   数据库中表的字段和结构体中的变量一样*/
#ifndef STRU_H
#define STRU_H
typedef struct
{
    char jrnl[4];
    char no[19];
    char name[10];
    int sex;
    char amt[20];
    char type[4];
}data;
#endif

/* putdata.ec 
   向数据库 demo2 中的t_tran_jrnl表 插入数据*/
#include "stru.h"
void putdata(data da)
{
    EXEC SQL include sqlca;
    EXEC SQL begin declare section;
struct data2
{
    char jrnl[4];
    char no[19];
    char name[10];
    int sex;
    char amt[20];
    char type[4];
}dt;
    EXEC SQL end declare section;
    memcpy(dt,da,sizeof(dt));
    EXEC SQL database demo2;
    EXEC SQL insert into t_tran_jrnl values(:dt);
    if(sqlca.sqlcode == 0)
    {
printf("OK!\n");
    }
    EXEC SQL disconnect current;
}
/* Makefile  */
accinfo : main.o putdata.o
  cc -o accinfo main.o putdata.o
main.o : main.c stru.h
cc -c main.c
putdata.o putdata.c : putdata.ec stru.h
esql putdata.ec

.PHONY : clean
clean:
rm accinfo *.o putdata.c
/*--------------------------------------------------------------------*/
errors. No output written to accinfo 
    *** Error code 13 (bu21)
还有用结构体传递数据,必须在ec中再声明一个结构体么?  有没更好的方法啊?
本人才接触数据库(informix) 很多不解啊。。。求大神帮帮忙。

2 个解决方案

#1


居然还有人用ESQL啊, 用ODBC不好么? 免得informix换成其他数据库就杯具了

#2


引用 1 楼 merlinfang 的回复:
居然还有人用ESQL啊, 用ODBC不好么? 免得informix换成其他数据库就杯具了

哎,你以为我想啊,给我出的题就是这样的。。

#1


居然还有人用ESQL啊, 用ODBC不好么? 免得informix换成其他数据库就杯具了

#2


引用 1 楼 merlinfang 的回复:
居然还有人用ESQL啊, 用ODBC不好么? 免得informix换成其他数据库就杯具了

哎,你以为我想啊,给我出的题就是这样的。。