MySQL数据库(三):读取数据库数据

上一节,我们介绍了数据库的基本操作,以及最后演示了如何使用库来连接数据库,在实际应用中,我们通常需要按照指定的条件对数据库进行操作,即增删改查操作,这是非常重要的!这一节我们继续通过一个例子,来演示如何查询数据库。

目录

一、数据库操作常用库函数

[1.1 按照指定条件获取结果集](#1.1 按照指定条件获取结果集)

[1.2 获取结果集中有多少条记录(行)](#1.2 获取结果集中有多少条记录(行))

[1.3 取出结果集中的一条记录(行)](#1.3 取出结果集中的一条记录(行))

[1.4 查看一条记录的列数](#1.4 查看一条记录的列数)

[1.5 释放结果集占用的内存](#1.5 释放结果集占用的内存)

[1.6 获取错误信息](#1.6 获取错误信息)

二、利用库函数实现对数据库的打印/查询(掌握)


一、数据库操作常用库函数

1.1 按照指定条件获取结果集

1.2 获取结果集中有多少条记录(行)

1.3 取出结果集中的一条记录(行)

1.4 查看一条记录的列数

1.5 释放结果集占用的内存

1.6 获取错误信息

二、利用库函数实现对数据库的打印/查询(掌握)

mysql客户端连接服务器端流程,如何操作数据库:增删改查!

cpp 复制代码
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <mysql/mysql.h>

int main()
{
    //1、创建连接句柄
    MYSQL mysql_con;//句柄实际是一个结构体
    
    //2、初始化连接句柄
    MYSQL*mysql=mysql_init(&mysql_con);
    if(mysql==NULL)
    {
        printf("mysql_init err\n");
        exit(1);
    }
    
    //3、连接数据库服务端:连接句柄、用户名字、密码、ip地址、端口、数据库名字、标志位给0,指针给NULL
    mysql=mysql_real_connect(mysql,"127.0.0.1","root","111111","c2024db",3306,NULL,0);
    if(mysql==NULL)
    {
        printf("连接失败\n");
        exit(1);
    }
    printf("连接成功\n");
    
    //4、调用库函数对数据库操作
    
    //char*sql="insert into student values(1004,'小张',30)";
    
    char*sql="select * from student";   //查询操作
    
    //char*sql="select * from student where age>22";//按照指定条件获取结果集
    //char*sql="update student set age=30 where name='小张'";修改
    //char*sql="delete from student  where id=1003";删除
    
    int res=mysql_query(mysql,sql);//执行sql语句
    if(res!=0)
    {
        printf("执行sql失败\n");
        exit(1);
    }
    
    //提取结果集
    MYSQL_RES *r=mysql_store_result(mysql);
    if(r==NULL)
    {
        printf("获取结果集失败\n");
        exit(1);
    }
    
    //查看结果集有多少条记录(行)
    int num=mysql_num_rows(r);
    printf("查询到%d条记录\n",num);
    
    //获取记录有多少列
    int count=mysql_field_count(mysql);
    printf("列数:%d\n",count);
    
    for(int i=0;i<num;i++)
    {
        //获取结果集中的一行记录
        MYSQL_ROW row=mysql_fetch_row(r); 
        for(int j=0;j<count;j++)
        {
            printf("%s   ",row[j]);//获取记录中的某一列
        }
        printf("\n");
    }
    
    //5、释放结果集占用的空间(因为结果集是在堆区进行分配的)
    mysql_free_result(r);
    
    //6、关闭连接
    mysql_close(mysql);
    exit(0);
}

至此,数据库第三节就已经介绍完毕,感谢大家的阅读,更多精彩内容见后期,下期再见!

相关推荐
JIngJaneIL41 分钟前
就业|高校就业|基于ssm+vue的高校就业信息系统的设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·高校就业
CXH72841 分钟前
nginx-file-server
运维·数据库·nginx
一 乐1 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小区互助系统
q***57741 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
失散131 小时前
分布式专题——57 如何保证MySQL数据库到ES的数据一致性
java·数据库·分布式·mysql·elasticsearch·架构
YJlio1 小时前
进程和诊断工具速查手册(8.13):VMMap / DebugView / LiveKd / Handle / ListDLLs 一页式现场排障清单
数据库·笔记·学习
whn19772 小时前
达梦的dbms_lock在DSC中能用吗
数据库
未来之窗软件服务2 小时前
自建开发工具IDE(五)数据库预览——东方仙盟炼气期
数据库·ide·仙盟创梦ide·东方仙盟
1***Q7842 小时前
SQL Future
数据库·sql
hoiii1873 小时前
设置Redis在CentOS7上的自启动配置
数据库·redis·缓存