返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBA-01BR-0024
错误码
错误标识
错误显示信息
GBA-01BR-0024

get dir information %s error
错误出现原因
获取目录信息失败
分析与建议
查看具体错误码或日志,进一步定位错误

使用GBase C API 执行SQL 语句
/*打印表中的数据,示例demo_1,demo_2,demo_3 调用此函数*/
void print_table(GBASE* gbase, char* table_name)
{
GBASE_RES* res = NULL;
GBASE_FIELD* fields = NULL;
GBASE_ROW row;
unsigned int num_fields;
char sql_select[500] = "select * from ";
int i=0;

while(table_name[i]){sql_select[14+i] = table_name[i]; i++;}
sql_select[14+i] = '\0';
if(gbase_query(gbase, sql_select))
{
printf("%d\t%s\n", gbase_errno(gbase),
gbase_error(gbase));
exit(0);
}
res = gbase_store_result(gbase);
num_fields = gbase_num_fields(res);
while(fields = gbase_fetch_field(res))
{
printf("|%s\t", fields->name);



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 71 -
}
printf("|\n");
for(i=0;i{
printf("--------");
}
printf("\n");
while((row = gbase_fetch_row(res)) != NULL)
{
for(i=0; i < num_fields; i++)
{
printf("|%s\t", row[i]);
}
printf("|\n");
}
gbase_free_result(res);
}
/*
使用sql 文创建表,并进行数据增、删、查、改操作
*/
void demo_1(void)
{
GBASE* gbase=NULL;
const char* sql_drop_table = "drop table if exists g_demo1";
const char* sql_create_table = "create table g_demo1(id int,
name varchar(20))";
const char* insert_mode = "insert into g_demo1(id,
name)values(%d, '%s')";
int id[NUM_INSERT];
char name[NUM_INSERT][20];
char sql_insert[200];
const char* delete_mode = "delete from g_demo1 where id=%d";
char sql_delete[200];
const char* update_mode = "update g_demo1 set name='udpate'
where id=%d";
char sql_update[200];

GBase 8a 程序员手册C API 篇


- 72 -

南大通用数据技术股份有限公司
const char* sql_select = "select * from g_demo1";
GBASE_RES* res = NULL;
GBASE_FIELD* fields = NULL;
GBASE_ROW row;

unsigned int i = 0;
unsigned int num_fields = 0;

/*初始化GBASE 结构体*/
if(!(gbase = gbase_init(0)))
{
fprintf(stderr, "不能初始化GBASE 结构体!\n");
exit(1);
}

/*数据库连接*/
if(!gbase_real_connect(gbase, host, user, passwd, db, port,
NULL, 0))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
gbase->reconnect = 1;

/*在数据库中创建表*/
if(gbase_query(gbase, sql_drop_table))
{
fprintf(stderr, "%s", gbase_error(gbase));
exit(1);
}
if(gbase_query(gbase, sql_create_table))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
/*向数据库表中插入数据*/
for(i=0; i


GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 73 -
{
id[i] = i;
sprintf(name[i], "name_%d", i);
}
for(i=0; i{
sprintf(sql_insert, insert_mode, id[i], name[i]);
if(gbase_query(gbase, sql_insert))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
}
/*从数据库表中选择出数据,并显示*/
if(gbase_query(gbase, sql_select))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
res = gbase_store_result(gbase);
printf("插入操作后表的内容\n");
if(res)
{
num_fields = gbase_num_fields(res);
while(fields = gbase_fetch_field(res))
{
printf("\t| %s ", fields->name);
}
printf("\t|\n");
while((row = gbase_fetch_row(res)) != NULL)
{
for(i=0; i < num_fields; i++)
{
printf("\t| %s ", row[i]);
}
printf("\t|\n");
}

GBase 8a 程序员手册C API 篇


- 74 -

南大通用数据技术股份有限公司
}

/*更新数据库表中数据*/
sprintf(sql_update, update_mode, id[0]);
if(gbase_query(gbase, sql_update))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
printf("更新操作后表的内容\n");
print_table(gbase, "g_demo1");

/*删除数据库表中数据*/
sprintf(sql_delete, delete_mode, id[1]);
if(gbase_query(gbase, sql_delete))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
printf("删除操作后表的内容\n");
print_table(gbase, "g_demo1");
/*释放结果集*/
gbase_free_result(res);
/*释放数据库连接句柄*/
gbase_close(gbase);
}

/*
使用预处理语句进行数据插入和选择操作
*/
void demo_2(void)
{
GBASE* gbase=NULL;
GBASE_STMT* stmt;
GBASE_BIND bind[2];




GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 75 -
const char* sql_drop_table = "drop table if exists g_demo2";
const char* sql_create_table = "create table g_demo2(id int,
name varchar(20))";
const char* insert_mode = "insert into g_demo2(id,
name)values(?, ?)";
int in_id[NUM_INSERT];
char in_name[NUM_INSERT][20];
const char* update_mode = "update g_demo2 set name='update'
where id=?";
const char* delete_mode = "delete from g_demo2 where id=?";
const char* select_mode = "select id, name from g_demo2";
int out_id[NUM_INSERT];
char out_name[NUM_INSERT][20];

unsigned int i = 0;
int temp = 0;
unsigned int num_fields = 0;

/*初始化GBASE 结构体*/
if(!(gbase = gbase_init(0)))
{
fprintf(stderr, "不能初始化GBASE 结构体!\n");
exit(1);
}
/*数据库连接*/
if(!gbase_real_connect(gbase, host, user, passwd, db, port,
NULL, 0))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);

}
gbase->reconnect = 1;
/*在数据库中创建表*/
if(gbase_query(gbase, sql_drop_table))
{
fprintf(stderr, "%s", gbase_error(gbase));
exit(1);

GBase 8a 程序员手册C API 篇


- 76 -

南大通用数据技术股份有限公司
}
if(gbase_query(gbase, sql_create_table))
{
fprintf(stderr, "\n%s\n", gbase_error(gbase));
exit(1);
}
/*向数据库表中插入数据*/
for(i=0; i{
in_id[i] = i;
sprintf(in_name[i], "name_%d", i);
}
if(!(stmt = gbase_stmt_init(gbase)))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}
if(gbase_stmt_prepare(stmt, insert_mode,
strlen(insert_mode)))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}

memset(bind, 0, sizeof(bind));

bind[0].buffer_type = GBASE_TYPE_LONG;
bind[1].buffer_type = GBASE_TYPE_STRING;
bind[1].buffer_length = 20;
printf("插入操作后表的内容\n");
for(i=0; i{
bind[0].buffer = (void*)∈_id[i];
bind[1].buffer = (void*)in_name[i];

if(gbase_stmt_bind_param(stmt, bind))
{



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 77 -
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}
if(gbase_stmt_execute(stmt))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}
}
/*从数据库表中选择数据*/
if(gbase_stmt_prepare(stmt, select_mode,
strlen(select_mode)))
{
fprintf(stderr, "\n%s'n", gbase_stmt_error(stmt));
exit(1);
}
memset(bind, 0, sizeof(bind));

bind[0].buffer_type = GBASE_TYPE_LONG;
bind[1].buffer_type = GBASE_TYPE_STRING;
bind[1].buffer_length = 20;

if(gbase_stmt_execute(stmt))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}

for(i=0; i{
bind[0].buffer = (void*)&out_id[i];
bind[1].buffer = (void*)out_name[i];

if(gbase_stmt_bind_result(stmt, bind))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);

GBase 8a 程序员手册C API 篇


- 78 -

南大通用数据技术股份有限公司
}
if(!gbase_stmt_fetch(stmt))
{
printf("\t|%d\t|%s\t|\n", out_id[i] , out_name[i]);
}
else
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}
}
/*更新数据库表中数据*/
if(gbase_stmt_prepare(stmt, update_mode,
strlen(update_mode)))
{
fprintf(stderr, "\n%s'n", gbase_stmt_error(stmt));
exit(1);
}
memset(bind, 0, sizeof(bind));

temp = 0;
bind[0].buffer_type = GBASE_TYPE_LONG;
bind[0].buffer = (void*)&temp

if(gbase_stmt_bind_param(stmt, bind))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}

if(gbase_stmt_execute(stmt))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}
printf("更新操作后表的内容\n");
print_table(gbase, "g_demo2");



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 79 -
/*删除数据库表中数据*/
if(gbase_stmt_prepare(stmt, delete_mode,
strlen(delete_mode)))
{
fprintf(stderr, "\n%s'n", gbase_stmt_error(stmt));
exit(1);
}
memset(bind, 0, sizeof(bind));

temp = 1;
bind[0].buffer_type = GBASE_TYPE_LONG;
bind[0].buffer = (void*)&temp

if(gbase_stmt_bind_param(stmt, bind))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}

if(gbase_stmt_execute(stmt))
{
fprintf(stderr, "\n%s\n", gbase_stmt_error(stmt));
exit(1);
}
printf("删除操作后表的内容\n");
print_table(gbase, "g_demo2");

/*关闭STMT 语句句柄*/
if(gbase_stmt_close(stmt))
{
fprintf(stderr, "%s\n", gbase_stmt_error(stmt));
exit(1);
}
/*释放数据库连接句柄*/
gbase_close(gbase);
}

GBase 8a 程序员手册C API 篇


- 80 -

南大通用数据技术股份有限公司

功能说明
提供查询跳秒机器修正值信息。
表结构说明
表5- 302 表结构信息说明:




Transition_time
跳秒的瞬变时间
Correction
跳秒的修正值