OceanBase Connector/C 为基于 C 开发的应用程序提供与 OceanBase 数据库的连接。本文主要介绍该连接方式的前提条件和操作步骤。
前提条件
在安装使用 OceanBase Connector/C 前请确保设置了基本的数据库开发环境,要求如下:
GCC 版本为 3.4.6 及以上,推荐使用 4.8.5 版本。
CMake 版本为 2.8.12 及以上。
请联系技术支持人员获取 OceanBase Connector/C 安装包即
libobclient。
Linux 安装
安装
libobclient。sudo rpm -ivh libobclient-xx.x86_64.rpm安装
obclient。sudo rpm -ivh obclient-xx.x86_64.rpm说明
由于
obclient依赖于libobclient,所以需要先安装libobclient。
从源代码编译
OceanBase Connector/C 的 Github 仓库提供最新开发版本的源代码。
安装依赖工具。
sudo yum install -y git cmake gcc make openssl-devel ncurses-devel rpm-build gcc-c++ bison bison-devel zlib-devel gnutls-devel libxml2-devel openssl-devel \ libevent-devel libaio-devel从 github 下载 obclient 和 libobclient(即 OceanBase Connector/C)源代码,地址如下:
libobclient:https://github.com/oceanbase/obconnector-c
执行编译脚本编译源代码,编译该代码会下载子 Module 和 OceanBase Connector/C 的代码。
sh build.sh #编译代码打包
libobclient的 RPM 安装包(包含 so 和头文件)。cd libmariadb/rpm #进入 libobclient 的打包目录 sh libobclient-build.sh #打包 libobclient 安装包打包
obclient的 RPM 包。cd ../../rpm #进入到 obclient 的打包目录 sh obclient-build.sh #打包 obclient 安装包安装
libobclient。sudo rpm -ivh libobclient-xx.x86_64.rpm安装
obclient。sudo rpm -ivh obclient-xx.x86_64.rpm说明
由于
obclient依赖于libobclient,所以需要先安装libobclient。
运行示例
完整的基础运行示例如下:
mysql_library_init(0, NULL, NULL);
MYSQL *mysql = mysql_init(NULL);
/* 使用 CLIENT_MULTI_STATEMENTS 选项连接服务器 */
if (mysql_real_connect (mysql, host_name, user_name, password,
db_name, port_num, socket_name, CLIENT_MULTI_STATEMENTS) == NULL)
{
printf("mysql_real_connect() failed\n");
mysql_close(mysql);
mysql_library_end();
exit(1);
}
/*执行多条语句 */
status = mysql_query(mysql,
"DROP TABLE IF EXISTS tbl1;\
CREATE TABLE tbl1(id INT);\
INSERT INTO tbl1 VALUES(110);\
UPDATE tbl1 SET id=120 WHERE id=110;\
SELECT * FROM tbl1;\
DROP TABLE tbl1");
if (status)
{
printf("Could not execute statement(s)");
mysql_close(mysql);
mysql_library_end();
exit(0);
}
/* 处理每个语句的结果 */
do {
/* 当前语句是否返回数据? */
result = mysql_store_result(mysql);
if (result)
{
/* 是的; 则处理行并释放结果集 */
process_result_set(mysql, result);
mysql_free_result(result);
}
else /* 没有结果集或报错 */
{
if (mysql_field_count(mysql) == 0)
{
printf("%lld rows affected\n",
mysql_affected_rows(mysql));
}
else /* 发生报错 */
{
printf("Could not retrieve result set\n");
break;
}
}
/* 判断是否有更多结果? -1 表示否,大于 0 表示报错,等于 0 表示是(即继续循环)*/
if ((status = mysql_next_result(mysql)) > 0)
printf("Could not execute statement\n");
} while (status == 0);
mysql_close(mysql);
mysql_library_end();「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




