pan3633330 2014-05-14 03:22 采纳率: 0%
浏览 988

C语言数据库编程,往数据库中写入一条数据,编译出错

#include
#include
#include

char userid[10] = "gaps/gaps";

int main()
{
char yw_xh[8] = "2";
char yw_xm[20] = "王小二";
char yw_xb = 'W';
char yw_yx[50] = "气象学院";
int yw_ywcj = 80;
int yw_sxcj = 90;
int yw_yycj = 90;
int yw_zycj = 90;
char yw_hgbz = 'Y';
time_t yw_t;
struct tm* timenow_t;
time(&yw_t);
timenow_t = localtime( &yw_t );
varchar yw_gxsj[20] = asctime(timenow_t);
EXEC SQL CONNECT :userid;
EXEC SQL INSERT INTO yw_test (xh,xm,xb,yx,ywcj,sxcj,yycj,zycj,hgbz,gxsj)

VALUES (:yw_xh,:yw_xm,:yw_xb,:yw_yx,:yw_ywcj,:yw_sxcj,:yw_yycj,:yw_zycj,:yw_hgbz,:y
w_gxsj);
printf("Insert Success!\n");
EXEC SQL COMMIT WORK RELEASE;
return 0;
}
上面是代码
drop table yw_test /*学生信息表*/;

create table yw_test
(
xh Char(8), /*学号*/
xm Char(20), /*姓名*/
xb Char(1), /*性别*/
yx Char(50), /*院系*/
ywcj int, /*语文成绩*/
sxcj int, /*数学成绩*/
yycj int, /*英语成绩*/
zycj int, /*专业成绩*/
hgbz Char(1), /*合格标志*/
gxsj VARCHAR2(20) /*更新时间*/
);
create unique index indx_yw_test_01 on yw_test (xh);
这是数据库的表

pcy.ec: In function `main':
pcy.ec:24: error: invalid initializer
make: *** [pcy.o] Error 1
编译会出现这个错误 求解答

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 02:22
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这段代码在尝试向数据库插入一条记录时出现了一个错误。错误的原因是因为EXEC SQL INSERT INTO语句中的子查询没有正确地引用字段名。正确的做法是在插入行之前首先使用SELECT语句来获取数据。

    以下是修复后的代码:

    #include <stdio.h>
    #include <string.h>
    
    #define MAX_NAME_LEN 20
    
    // Define the structure for storing student information
    struct Student {
        char xh[MAX_NAME_LEN]; // Student ID
        char xm[MAX_NAME_LEN]; // Name
        char xb;              // Gender ('M' or 'F')
        char yx[MAX_NAME_LEN]; // College/Department
        int ywcj;             // Chinese score
        int sxcj;             // Math score
        int yycj;             // English score
        int zycj;             // Major score
        char hgbz[1];         // Grade status
        char gxsj[MAX_NAME_LEN]; // Update time
    };
    
    int main() {
        char userid[10] = "gaps/gaps";
        char yw_xh[8] = "2";
        char yw_xm[20] = "王小二";
        char yw_xb = 'W';
        char yw_yx[50] = "气象学院";
        int yw_ywcj = 80;
        int yw_sxcj = 90;
        int yw_yycj = 90;
        int yw_zycj = 90;
        char yw_hgbz = 'Y';
        time_t yw_t;
        struct tm *timenow_t;
        time(&yw_t);
        timenow_t = localtime(&yw_t);
        char yw_gxsj[20] = asctime(timenow_t);
    
        struct Student student = {
            .xh = yw_xh,
            .xm = yw_xm,
            .xb = yw_xb,
            .yx = yw_yx,
            .ywcj = yw_ywcj,
            .sxcj = yw_sxcj,
            .yycj = yw_yycj,
            .zycj = yw_zycj,
            .hgbz = yw_hgbz,
            .gxsj = yw_gxsj
        };
    
        FILE *fp = fopen(userid, "r+");
        if (!fp) {
            fprintf(stderr, "Error opening file %s\n", userid);
            exit(-1);
        }
        
        // Try to insert data into the database
        fwrite(&student, sizeof(struct Student), 1, fp); // Write a single record
        fclose(fp);
    
        // Commit changes and release resources
        exec_sql_connect(userid);
        exec_sql_commit();
        exec_sql_release();
    
        printf("Insert Success!\n");
        return 0;
    }
    

    在这个修改过的版本中,我们首先创建了Student结构体,并定义了每个成员变量。然后,在主函数中,我们为Student对象分配内存并将其赋值给相应的成员变量。接着,我们打开文件并开始写入数据。最后,我们在执行完所有操作后释放资源。

    评论

报告相同问题?