mysql 客户端简单搭建
主要使用的是mysql开发包中的api接口
操作流程
1.初始化mysql操作句柄
MYSQL *mysql_init(MYSQL *mysql);
对传人的句柄进行初始化
若传入的句柄为NULL,则内部会动态申请空间,进行初始化,并返回句柄首地址
返回值:若失败则返回NULL
2.链接mysql服务器
MYSQL *mysql real connect(MYSQL *mysql, char *host, char *user, char *pass, char *dbname,
int port, char *unix _socket, int client_flag)
mysql:初始化完成的mysql句柄;
host:用户名;
port:端口,默认0为3306端口,是mysql服务的端口;
pass: 密码;
dbname:要操作的库名称
unix socket:套接字或管道文件名-通常置NULL
client flag: 客户端的操作标志,通常置0;
返回值:成功则返回句柄首地址,失败返回NULL
3.设置客户端字符集(通常是与服务器保持一致,使用utf3)
int mysql_set character_set(MY sQL *mysal, char *name)
mysql:操作句柄;
name:宇符集名称,通常是"utf8”
返回值:成功返回0;失败返回非0;
4.选择要操作的数据库(切换操作的库)
int mysql_select_db(MYsQL *mysq. char *dbname):
5.将sql语句发送给服务器,并执行sql语句
int mysql_query(MY SQL *mysql, char *sql);
mysql:操作句柄;
sql:对数据库中的数据进行操作的sql语句
返回值:成功返回0:失败返回非0
语句有没有执行成功,决定了当前的操作是否完成了
6.增改删操作,只要语句执行成功,就OK,但是如果是查询语向,因为查询的话语向执行成功了,还需要获取查询结果
将查询结果保存到本地
MYSQL RES *mysql store result(MYSQL *mysal); mysq:操作句柄;
返回值:成功返回结果集的结构首地址,失败返回NULL
将结果集保存到本地与执行语句这一步操作,若使用的是同一个操作句柄则存任线程安全 问题
获取结果集中的结果行数和列数
int mysal num rows(MYSQL RES *res);
获取结果有多少行int mysql num fields(MYSQL RES *res);获取一行中有多少列
遍历结果集,逐条取出数据
MYSQL_ ROW mysql fetch row(MY SQL_ RES *res);
注意:这个函数或者说res 内部记录了当前的读写位置,只需要不断的调用,就可以逐条取出数据
这个返回值是个字符指针数组char *arr0,将一行中的多列进行扁平化存储,每一个元素都是一列数据
释放结果集
int mysql_ free_ result(MYSQL_ RES *res);
7. 关闭容户端连接,释放句柄资源
int mysql close(MYSQL *mysql);
代码展示
#include<mysql/mysql.h>
#include<unistd.h>
#include<string.h>
int main()
{
//初始化mysql句柄
MYSQL *mysql = mysql_init(NULL);
if(mysql == NULL)
{
printf("mysql init error !");
return -1;
}
//选择mysql服务器进行链接
if(mysql_real_connect(mysql,"0.0.0.0","root","","test",0,NULL,0) == NULL)
{
printf("connect failed :%s \n",mysql_error(mysql));
mysql_close(mysql);
}
//设置字符集
int ret;
ret = mysql_set_character_set(mysql,"utf8");
if(ret != 0)
{
printf("set character failed :%s \n",mysql_error(mysql));
}
//选择操作的数据库
mysql_select_db(mysql,"test");
//执行语句
const char* select_sql = "select * from student;";
ret = mysql_query(mysql,select_sql);
if(ret != 0)
{
printf("query failed :%s \n",mysql_error(mysql));
mysql_close(mysql);
return -1;
}
//查询语句执行结果
MYSQL_RES* res = mysql_store_result(mysql);
if(res == NULL)
{
printf("store result failed :%s \n",mysql_error(mysql));
mysql_close(mysql);
return -1;
}
int num_row = mysql_num_rows(res);
int num_col = mysql_num_fields(res);
for(int i = 0 ; i < num_row;i++)
{
MYSQL_ROW row = mysql_fetch_row(res);
for(int j = 0 ;j < num_col;j++){
printf("%-15s",row[j]);
}
printf("\n");
}
mysql_free_result(res);
mysql_close(mysql);
}
#include<mysql/mysql.h>
#include<unistd.h>
#include<string.h>int main()
{//初始化mysql句柄MYSQL *mysql = mysql_init(NULL);if(mysql == NULL){printf("mysql init error !");return -1;}//选择mysql服务器进行链接if(mysql_real_connect(mysql,"0.0.0.0","root","","test",0,NULL,0) == NULL){printf("connect failed :%s \n",mysql_error(mysql));mysql_close(mysql);}//设置字符集int ret;ret = mysql_set_character_set(mysql,"utf8");if(ret != 0){printf("set character failed :%s \n",mysql_error(mysql));}//选择操作的数据库mysql_select_db(mysql,"test");//执行语句const char* select_sql = "select * from student;";ret = mysql_query(mysql,select_sql);if(ret != 0){printf("query failed :%s \n",mysql_error(mysql));mysql_close(mysql);return -1;}//查询语句执行结果MYSQL_RES* res = mysql_store_result(mysql);if(res == NULL){printf("store result failed :%s \n",mysql_error(mysql));mysql_close(mysql);return -1;}int num_row = mysql_num_rows(res);int num_col = mysql_num_fields(res);for(int i = 0 ; i < num_row;i++){MYSQL_ROW row = mysql_fetch_row(res);for(int j = 0 ;j < num_col;j++){printf("%-15s",row[j]);}printf("\n");}mysql_free_result(res);mysql_close(mysql);
}
mysql 客户端简单搭建相关推荐
- 云时代,最好用的MySQL客户端工具推荐
数据库图形客户端(GUI)工具,可以大大帮助开发者提升SQL编写与开发的效率.在云时代,企业越来越多的开始采用RDS,同时也还有部分本地IDC自建数据库,而在云端也会选择/尝试多个不同云厂商.&quo ...
- Discuz论坛简单搭建
Discuz论坛简单搭建 基础网络环境配置 Selinux权限 配置对应yum源配置本地源 安装 http mariadb* php php-mysql Mariadb的使用 php设置默认识别的we ...
- MYSQL 客户端与服务器关系
数据库概念 如果想要知道mysql数据库客户端与服务器之间的关系.首先要明白什么是"数据库". 从字面意思理解,所谓"数据库",就是存放数据的库.现实中,大 ...
- 线程简介和MySQL调试环境搭建
导读: 本文节选自八怪专栏<深入理解MySQL主从原理32讲>第29节 想内容请点击订阅专栏 注意:如果正文有图片不清晰可以将图片保存到本地查看(本文建议横屏观看效果更佳) 最后我想简单说 ...
- 2012 iis php mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程 一.环境说明: 操作系统:Windows Server2012 R2 PHP版本:php 5.5.8 MySQ ...
- Eclipse 3.5 Classic+Tomcat 6.0+MySql 5.5搭建java web开发环境
Eclipse 3.5 Classic+Tomcat 6.0+MySql 5.5搭建java web开发环境 对于初学者来说,如果没有接触过java web开发的话,搭建开发环境将是一个门槛.以前一直 ...
- 如何基于MySQL及Redis搭建统一的kv存储服务 | 秦波
一.MySQL+Redis常用部署方式 1.1 拓扑 1.2 特点 业务层通过双写同时写MySQL及Redis.读通常在Redis,若读取不到,则从MySQL读取,然后将数据同步到Redis,Re ...
- 现在好用的mysql客户端_还在用 Navicat 的,可以试试这几款免费且好用的 MySQL 客户端...
没别的意思,今天就是为了给你推荐几款 MySQL 客户端,这几款客户端有一个共通点,那就是好用而且免费. "害,我看也就是平平无奇嘛!" 然后,转身赶紧下载体验一下. 哪个做开发的 ...
- navicat保存查询语句_还在用 Navicat 的,可以试试这几款免费且好用的 MySQL 客户端...
没别的意思,今天就是为了给你推荐几款 MySQL 客户端,这几款客户端有一个共通点,那就是好用而且免费. "害,我看也就是平平无奇嘛!" 然后,转身赶紧下载体验一下. 哪个做开发的 ...
最新文章
- 关于鸿蒙 2.0,那些开发者不知道的一切
- 如何巧用方位角和倾斜角增大光伏电站的发电量?
- 公平锁的lock()方法走读
- HBase原理-要弄懂的sequenceId
- 【转】伪静态URLRewrite学习笔记
- 初学者必看的文章:在VM12中安装 RedHat RHEL7.2 系统的详细步骤:看我如何操纵RHEL系统...
- 集成springboot案例_SpringBoot开发者都在用的五款优质扩展,每个都很能打!
- 《设计模式——基于C#的工程化实现及扩展》
- 以前的某个程序安装已在安装计算机上创建挂起的文件操作
- 大数据分析如何保证数据质量
- 【人脸识别】基于matlab GUI PCA算法人脸识别门禁系统【含Matlab源码 1777期】
- 20_星仔带你学Java之Java常用类
- iOS App Store Connect 内购详解
- 在龙芯3A3000上安装Debian 10
- 湖大计算机考研跟南航比,省三也可以逆袭进入985大学?这49所自主招生高校都收省三!...
- 【光模块专题】最常见的几种光模块光纤接口类型
- 聆秘2013手游渠道之争:四大战役谁主沉浮?
- 在我的计算机看不到移动硬盘,移动硬盘在我的电脑中显示容量但不能显示内容 – 手机爱问...
- android业余手机开发,赚钱心得
- win10系统nfs服务器搭建