当前位置: 首页 > news >正文

使用c语言连接数据库

c语言连接数据库

我们可以去mysql官网去下载mysql提供的客户端,使用C API来连接和操作数据库

下载好之后把压缩包弄进linux中

然后用tar命令解包,

item就是我解包后给目录修改的名字,你里面的东西和我不一样没关系,这个不重要,主要是,里面得有include和lib这两个目录,有这两个目录我们就可以使用mysql的头文件和动态库

我们要使用mysql的动态库和头文件,那就需要在编译的时候指定编译选项-I 指定头文件查找目录,-L指定库文件查找目录,-l指定链接的库

mysql的C语言接口介绍

1、mysql_int

MYSQL * mysql_init(MYSQL *mysql)

一般是MYSQL *mfp = mysql_init(NULL)获得一个MYSQL句柄

2、mysql_real_connect

MYSQL *
mysql_real_connect(MYSQL *mysql,const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long client_flag)

mysql:前面mysql_init创建的句柄,使用mysql_real_connect来进行初始化

host:mysqld服务器的ip

user:用户名

db:要操作的数据库

port:mysqld服务器的监听端口

后面两个参数直接为nullptr和0即可

3、mysql_query

int mysql_query(MYSQL *mysql, const char *q);

q: sql语句,可以是增删查改中的任何一种,甚至begin、commit这些也不在话下

mysql_query的返回值是0那么就是成功,如果返回值是其他那就是出错
假如是增删改这种sql语句,执行了也就执行了,我们只需要通过返回值看看是否执行成功,不要出错,但是如果是查,那返回值哪怕是执行成功,我们也无法得到查询结果呀,所以下面的函数全部都是为查询结果而生的

4、mysql_store_result

MYSQL_RES *mysql_store_result(MYSQL *mysql);

使用mysql_query进行select后,查询结果会保存进MYSQL中,我们可以用mysql_store_result来将查询结果弄到MYSQL_RES中

5mysql_num_rows

my_ulonglong mysql_num_rows(MYSQL_RES *res);

获取结果行数

6、mysql_num_fields

unsigned int mysql_num_fields(MYSQL_RES *res);

获取字段数,也就是列数

7、mysql_fetch_fields

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res);

返回字段数组的第一个元素MYSQL_FIELD的地址

typedef struct st_mysql_field {char *name;                 /* 字段名 */char *org_name;             /* 原始字段名(如有别名) */char *table;                /* 字段所属的表名 */char *org_table;            /* 原始表名(如有别名) */char *db;                   /* 字段所属的数据库名 */char *catalog;              /* 目录名(通常为 "def") */char *def;                  /* 默认值(如果有) */unsigned long length;       /* 字段长度(定义时的长度) */unsigned long max_length;   /* 查询结果中的最大长度 */unsigned int name_length;unsigned int org_name_length;unsigned int table_length;unsigned int org_table_length;unsigned int db_length;unsigned int catalog_length;unsigned int def_length;unsigned int flags;         /* 字段标志(如 NOT_NULL_FLAG) */unsigned int decimals;      /* 小数位数(用于数值类型) */unsigned int charsetnr;     /* 字符集编号 */enum enum_field_types type; /* 字段类型(如 MYSQL_TYPE_VARCHAR) */void *extension;
} MYSQL_FIELD;

8、mysql_fetch_row

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
它会返回一个MYSQL_ROW变量,MYSQL_ROW其实就是char **,在mysql.h中定义为typedef char **MYSQL_ROW;
char**是char*数组的第一个元素的地址,每个char*指向一行数据的一个字段,char*数组整个就可以指向一行数据
mysql_fetch_row每次使用会自动往后走,返回下一行数据的char**
9、mysql_close
void mysql_close(MYSQL *sock);
MYSQL管理着众多数据,所以要mysql_close进行释放资源

示例代码:

#include <iostream>
#include <mysql.h>
#include <string>const std::string host="192.168.217.132";
const std::string user = "connector";
const std::string password="Aa123456.";
const std::string database="conn";
int port=3306;int main()
{//std::cout<<"mysql version:"<<mysql_get_client_info()<<std::endl;MYSQL* mysql=mysql_init(nullptr);mysql_real_connect(mysql,host.c_str(),user.c_str(),password.c_str(),database.c_str(),port,nullptr,0);if(mysql==nullptr){std::cout<<"连接数据库失败"<<std::endl;}else{std::cout<<"连接数据库成功"<<std::endl;}mysql_query(mysql,"select * from user;");MYSQL_RES* res=mysql_store_result(mysql);int rows= mysql_num_rows(res);int clos= mysql_num_fields(res);MYSQL_FIELD* fields =mysql_fetch_fields(res);for(int i=0;i<clos;i++){std::cout<<fields[i].name<<" ";}std::cout<<std::endl;for(int i=0;i<rows;i++){MYSQL_ROW row= mysql_fetch_row(res);for(int j=0;j<clos;j++){std::cout<<row[j]<<" ";}printf("\n");}mysql_close(mysql);return 0;
}

http://www.dtcms.com/a/403666.html

相关文章:

  • 网站在百度找不到了王占山人物简介
  • Windows Server 定时备份 MySQL 数据升级版:单表备份 + 压缩功能 + 运维统计
  • gpt-4o+deepseek+R生成热力图表
  • 管理系统前端模板河北seo网络推广
  • Mac完整Homebrew安装教程、brew安装教程踩过的坑、brew安装总结、安装brew遇到的问题
  • 想学做网站学那个软件好淘宝代运营公司排名
  • 网站建设策划怎么谈做视频网站用什么模板
  • 千秋网络是家西安做网站的公司安装免费下载app
  • P1073题解
  • ShardingSphere 分布式数据库中间件生态
  • 使用时长提升 4 倍,融云 AI Agent 助力中东语聊应用激活新用户
  • 旅行商问题以及swap-2opt应用
  • 【知识图谱:实战篇】--搭建医药知识图谱问答系统
  • shell编程:sed - 流编辑器(3)
  • 建站最便宜的平台免费网络app
  • 《第四届数字信任大会》精彩观点:腾讯经验-人工智能安全风险之应对与实践|从十大风险到企业级防护架构
  • StarRocks 助力印度领先即时零售平台 Zepto 构建实时洞察能力
  • 法制教育网站制作伪装网站
  • cgdb 学习笔记(GDB 图形化增强工具)
  • 广州专门做网站企业网站制作公司排名
  • .h264或.264视频文件转化成mp4视频
  • 【Python】正则表达式
  • Jenkins Pipeline中关于“\”的转义字符
  • 如何与AI有效沟通:描述问题及提示词技巧
  • 网站建设连接数据库我赢职场wordpress
  • TDengine 聚合函数 ELAPSED 用户手册
  • Android音频学习(二十)——高通HAL
  • C#练习题——Lambad表达式的应用
  • Polar WEB(1-20)
  • 湖州做网站公司哪家好温州市网站制作公司