更新日期:2024年09月11日
使用预处理快速插入数据
#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);
}