#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
居然还有人用ESQL啊, 用ODBC不好么? 免得informix换成其他数据库就杯具了
#2
哎,你以为我想啊,给我出的题就是这样的。。