ZBLOG

C结合haproxy操作tidb库详细示例

这里是一个详细示例,演示如何使用C语言结合HAProxy操作TiDB数据库。请确保你已经安装了libmysqlclient-dev库来进行MySQL客户端开发。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <mysql/mysql.h>

#define HAPROXY_IP "127.0.0.1"
#define HAPROXY_PORT 3306

int main() {
    int sock;
    struct sockaddr_in server_addr;

    // 创建 socket
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == -1) {
        perror("Failed to create socket");
        exit(EXIT_FAILURE);
    }

    // 设置服务器地址
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(HAPROXY_PORT);
    if (inet_pton(AF_INET, HAPROXY_IP, &(server_addr.sin_addr)) <= 0) {
        perror("Invalid address/ Address not supported");
        exit(EXIT_FAILURE);
    }

    // 连接到 HAProxy
    if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("Connection failed");
        exit(EXIT_FAILURE);
    }

    // 初始化 MySQL 连接句柄
    MYSQL *con = mysql_init(NULL);

    // 连接到 TiDB
    if (!mysql_real_connect(con, NULL, "username", "password", NULL, 0, NULL, 0)) {
        fprintf(stderr, "Failed to connect to database: %s\n", mysql_error(con));
        exit(EXIT_FAILURE);
   }

   // 执行 SQL 查询
   const char *query = "SELECT * FROM mytable;";
   if (mysql_query(con, query)) {
       fprintf(stderr, "Query failed: %s\n", mysql_error(con));
       exit(EXIT_FAILURE);
   }

   // 获取查询结果集
   MYSQL_RES *result = mysql_store_result(con);

   // 输出查询结果
   printf("Data from TiDB:\n");
   MYSQL_ROW row;
   while ((row = mysql_fetch_row(result))) {
       printf("%s\t%s\n", row[0], row[1]);
   }

   // 释放资源
   mysql_free_result(result);
   mysql_close(con);

   // 关闭 socket 连接
   close(sock);

   return 0;
}

请注意,上述示例代码使用MySQL C API连接到HAProxy,并执行一个简单的SELECT查询。你需要根据实际情况修改代码中的用户名、密码和查询语句。

在编译时,你需要链接libmysqlclient库,请使用以下命令进行编译:

gcc -o tidb_example tidb_example.c -lmysqlclient

这将生成一个可执行文件”tidb_example”。运行该文件即可连接到HAProxy并操作TiDB数据库。

此示例仅用于演示目的,实际环境中你可能需要处理更多的错误检查和异常情况。希望对你有所帮助!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=11238

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?