返回首页

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

更新日期:2024年09月11日


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 10 -
数据库是分组为一个或多个表的信息集合。
表是组织为行和列的数据项的数组。
每个 GBase
8s 数据库服务器产品中都提供了演示数据库。下面是该演示数据库中的部分表。
stock_num manu_code
description
unit_price
unit
unit_descr
. . .
. . .
. . .
. . .
. . .
. . .
1
HRO
baseball
gloves

使用预处理快速插入数据
#include
#include
#include
#include "gbase.h"

#define NUM_INSERT 1000

void main(void)
{
GBASE* gbase=NULL;
GBASE_STMT* stmt;
GBASE_BIND bind[2];

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];

unsigned int i = 0;
char* host = "192.168.111.96";
char* user = "gbase";
char* passwd = "gbase20110531";
char* db = "test";
int port = 5258;



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

- 85 -

/*初始化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);

}
gbase_autocommit(gbase, 0);
/*向数据库表中插入数据*/
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);

GBase 8a 程序员手册C API 篇


- 86 -

南大通用数据技术股份有限公司
}
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;

printf("开始插入%d 条数据\n", NUM_INSERT);
for(i=0; i{
bind[0].buffer = (void*)∈_id[i];
bind[1].buffer = (void*)in_name[i];
bind[1].buffer_length = strlen(in_name[i]);

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);
}
}
gbase_commit(gbase);

/*关闭STMT 语句句柄*/
if(gbase_stmt_close(stmt))
{
fprintf(stderr, "%s\n", gbase_stmt_error(stmt));



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

- 87 -
exit(1);
}
/*释放数据库连接句柄*/
gbase_close(gbase);
}

结果表包含调度程序任务执行情况的历史数据。
大多数传感器创建一个新的表来存储它们的结果。表的名称在 ph_task 表的
tk_result_table 列中列出。表的结构是由 ph_task 表中 tk_create 列里的 CREATE
TABLE 语句定义的。
当内置传感器以前缀 mon_ 启动时,它会自动创建结果表。

类型
描述
ID
integer
传感器的迭代顺序编号。必须在 $DATA_SEQ_ID
中设置
引用于 ph_run 表中的 run_task_seq 列
user columns
any
可指定任意数据类型的列来保存由传感器返回
的信息