利用C语言访问mysql
利用C语言访问mysql
- 一、相关头文件以及函数:
- 1、连接数据库使用的头文件和库文件
- 2、初始化连接句柄
- 3、连接数据库
- 4、关闭连接
- 5、提取结果
- 6、获取结果集的行数
- 7、取出结果集中的一行记录
- 8、查看记录行的列数
- 9、释放结果集占用的内存
- 10、获取错误信息
- 二、程序示例
- 1、对数据库的表进行增删改操作,并不需要程序返回相应的结果:
- 2、执行select查询语句的时候,需要程序将数据表中查询的语句返回
一、相关头文件以及函数:
1、连接数据库使用的头文件和库文件
#inlcude <mysql/mysql.h>
程序中使用访问mysql的有关函数接口,需要在连接时指定库名:
例如编译链接的时候指令如下:
gcc -o main mian.c -lmysqlclient
2、初始化连接句柄
该方法用来初始化一个连接句柄。
①如果参数为空,则返回一个指向新分配的连接句柄的指针。示例如下:
MYSQL * mysql=mysql_init(NULL);
②如果传递一个已有的结构,它将被重新初始化。
MYSQL * mysql_init(MYSQL * mysql);
出错时返回NULL
3、连接数据库
MYSQL * mysql_real_connect(MYSQL * mysql,const char* host,const char* user,const char* password,const char* db,unsigned int port,const char* unix_socket,unsigned long clientflag);
参数介绍:
mysql:上一步mysql_init()初始化返回的指针。
host:主机名(连接的服务器的IP地址)本地可以使用"localhost"或"127.0.0.1"或NULL。
user:用户名。
password:用户密码。
db:数据库的名字。
port:数据库的端口3306,也可以填写0,意味着使用mysql的默认端口3306。
unix_socket:一般为NULL,表示不适用unix套接字或者管道。
clientflag:标志位,一般给0。
4、关闭连接
void mysql_close(MYSQL* mysql);
5、提取结果
MYSQL_RES *mysql_store_result(MYSQL* mysql);//一次性提取所有数据
MYSQL_RES *mysql_use_result(MYSQL* mysql);//依次提取一行数据
该方法可以保存客户端中接收到的所有数据
6、获取结果集的行数
uint6_t mysql_num_rows(MYSQL_RES* res);
该方法获取结果集中的行数
7、取出结果集中的一行记录
MYSQL_ROW mysql_fetch_row(MYSQL_RES* res);
从结果集中取出一行,并把它存放到一个行结构中。当数据用完或者出错时,返回为NULL。所以通常情况下该方法需要循环调用。
8、查看记录行的列数
unsigned in mysql_field_count(MYSQL * mysql);
9、释放结果集占用的内存
void mysql_free_result(MYSQL_RES* res);
执行完sql语句,得到返回的结果集,处理完数据后,需要调用该方法释放结果集的内存空间
10、获取错误信息
unsigned int mysql_error(MYSQL *mysql);//返回错误码
const char* mysql_error(MYSQL* mysql);//返回错误信息描述
二、程序示例
1、对数据库的表进行增删改操作,并不需要程序返回相应的结果:
①数据库的前期准备:
②代码:
//没有结果的查询
#include <stdio.h>
#include <unistd.h>
#include <mysql/mysql.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
int main()
{MYSQL* mysql=mysql_init(NULL);if(mysql==NULL){printf("mysql init err\n");exit(0);}//root有两个用户,一个是本地登陆的,一个是远程登录的用户mysql=mysql_real_connect(mysql,"127.0.0.1","root","111111","c215",3306,NULL,0);if(mysql==NULL){printf("mysql connect err\n");exit(0);}//执行sql语句//1、char* sql="insert into stu values('小名',21)";//这个插入语句最后可以加分号也可以不加分号//2、char * sql="delete stu from stu where name='小王'";//3、char* sql="update stu set age=18 where name='小名'";int res=mysql_query(mysql,sql);if(res!=0){printf("mysql query er:%sr\n",mysql_error(mysql));}mysql_close(mysql);
}
③执行sql1语句在mysql中看到的结果:
④执行sql2语句在mysql中看到的结果:
⑤执行sql3语句在mysql中看到的结果:
2、执行select查询语句的时候,需要程序将数据表中查询的语句返回
①前期准备;
将之前c215中stu表的数据删完,然后进行下面操作:
②代码:
//没有结果的查询
#include <stdio.h>
#include <unistd.h>
#include <mysql/mysql.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
int main()
{MYSQL* mysql=mysql_init(NULL);if(mysql==NULL){printf("mysql init err\n");exit(0);}//root有两个用户,一个是本地登陆的,一个是远程登录的用户mysql=mysql_real_connect(mysql,"127.0.0.1","root","111111","c215",3306,NULL,0);if(mysql==NULL){printf("mysql connect err\n");exit(0);}char* sql="select * from stu";int res=mysql_query(mysql,sql);if(res!=0){printf("mysql query er:%sr\n",mysql_error(mysql));}//准备拿到结果集,进行空间的分配//不能通过结果的成功与否判断是否有数据//而应该通过返回的几条决定是否有数据MYSQL_RES* mysql_res=mysql_store_result(mysql);//这里只能看获取结果是否成功if(mysql_res==NULL){printf("提取数据失败:%s\n",mysql_error(mysql));exit(0);}//提取当前有多少条记录,这里可能会有条件限制,我需要那种数据int num=mysql_num_rows(mysql_res);if(num==0)//认为没有记录{printf("没有记录\n");}else//有数据{//取出结果集中的数据printf("当前记录条数:%d\n",num);//计算列数int m=mysql_field_count(mysql);printf("一行记录有%d列\n",m);//循环打印for(int i=0;i<num;i++){//获取一行记录,通常是需要循环的,但是当前数据表中只有一条记录,所以没有进行循环MYSQL_ROW mysql_row=mysql_fetch_row(mysql_res);//printf("name=%s,age=%s\n",mysql_row[0],mysql_row[1]);//循环打印各个列for(int j=0;j<m;j++){printf("row[%d]=%s ",j,mysql_row[j]);}printf("\n");}}//释放结果集mysql_free_result(mysql_res);mysql_close(mysql);
}
③程序运行结果:
利用C语言访问mysql相关推荐
- python语言数据库规模_Python语言访问MySQL数据库
4.使用python语言访问MySQL 1)pymysql库:Python语言访问MySQL接口 -安装: 在线:pip install pymysql 离线: 第一步:下载安装包,下载地址: htt ...
- Mysql —— linux下使用c语言访问mySql数据库
示例1: #include<stdio.h> #include<mysql.h> int main() { MYSQL mysql; mysql_init(&mysql ...
- MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子
C语言访问MYSQL数据库的完整的代码例子 1.手写安装带mysql sdk 的mysql 2.新建控制台项目,项目属性中把 C:\Program Files\MySQL\MySQL Server 5 ...
- mysql c测试程序_Linux平台下从零开始写一个C语言访问MySQL的测试程序
Linux 平台下从零开始写一个 C 语言访问 MySQL 的测试程序 2010-8-20 Hu Dennis Chengdu 前置条件: (1) Linux 已经安装好 mysql 数据库: (2) ...
- c语言访问mysql,C语言访问mysql数据库
mysql中新建的数据库为hyx,hyx中的表为my_schema,表中的数据为下图: 编写代码,访问表中的数据,测试代码如下: #include "stdafx.h" #incl ...
- 使用C语言访问MySQL数据库基础
使用C语言访问MySQL数据库基础 一.MySQL管理 包含在MySQL发行版中的一些有用的工具程序使管理工作变得相当容易. 除mysqlshow命令以外,所有的MySQL命令都接受所示的3个标准参数 ...
- Linux下使用C语言访问MySQL函数
//mysqlVersion.c /************************************************************* FileName : mysqlVers ...
- c 连接mysql错误信息_使用C语言访问MySQL数据 —— 连接和错误处理
2011-05-09 wcdj 可以通过许多不同的编程语言来访问MySQL,例如,C,C++,Java,Perl,Python,Tcl,PHP等.本文主要总结使用C语言接口如何访问MySQL数据. ( ...
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
使用的系统是Ubuntu 11.10.数据库是MySQL. MySQL数据库环境配置 首先需要安装MySQL客户端和服务器,命令行安装方式为: sudo apt-get install mysql-s ...
最新文章
- 使用jQuery制作手风琴效果.(转)
- oracle 实现map,PLSQL实现的map功能,以及一些疑惑
- Leetcode 23 合并k个升序链表 (每日一题 20210722)
- solr7.4 centos7安装
- windows版本的clion软件除了使用wsl配置Ubuntu子系统外,还可以使用MinGW-w64来配置gcc和g++
- VRRP在生产环境中的应用
- 7-153 找鞍点 (20 分)
- 十大注意事项 防止系统重装时遭遇病毒
- 使用 Arduino 烧录全新的 ATmega328P
- 博弈论笔记:动态博弈
- 安装win10专业版步骤
- dalek-cryptography 与adjoint-io bulletpoofs性能对比
- cycJava基础以及集合总结
- 如何学习Photoshop
- JGG论坛:赵方庆研究员解析肠道菌群与人体健康(11月10日10:00)
- 我是怎么薅的双十一羊毛
- java商品管理系统
- 软件测试的背景和前期准备
- 领导的艺术:工作里怎么样做,才是包容
- OAuth2学习(一)——初识OAuth2
热门文章
- 无法枚举容器中的对象,访问被拒绝的解决方法
- php 检测 拍照方向,拍摄照片或视频时如何检查iPhone相机的方向
- 使用 fastboot oem unlock来对nexus 9解锁 .
- 颜色管理出问题:windows照片查看器无法显示此图片 因为内存不足。
- iOS 视频播放 - AVPlayer
- fastapi python 并发_如何评价最近爆红的FastAPI?
- 基于空间大数据的社会感知
- 解决Python3.5版本下安装librosa报错问题
- 常耀俊老师经典《360人际沟通技巧》课程
- 2022年9月计划(ue4热更新视频教程+抄写rhi部分源码)