c/c++数据库(新手笔记)

博客介绍了数据库相关知识,指出关系型数据库管理系统(RDBMS)用于存储和管理大数据量的优势。详细阐述了在C/C++中使用MySQL数据库的步骤,包括包含头文件、创建结构体、初始化、设置编码、连接数据库、查询数据、获取结果集等操作,还提及了相关函数原型和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库简介

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database

在这里插入图片描述
1.表头(header): 每一列的名称;
2.列(col): 具有相同数据类型的数据的集合;
3.行(row): 每一行用来描述某条记录的具体信息;
4.值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
5.键(key): 键的值在当前列中具有唯一性。

使用步骤

首先包含头文件:#include “mysql.h”
创建结构体
       MYSQL mysql; //一个数据库结构体
       MYSQL_RES* res; //一个结果集结构体
       MYSQL_ROW row; //char** 二维数组,存放一条条记录
初始化数据库
       原型:MYSQL *mysql_init(MYSQL *mysql)
       使用:mysql_init(mysql)
设置编码方式
原型:int mysql_options(MYSQL *mysql, enum mysql_option option, const void *arg)
参考:https://dev.mysql.com/doc/refman/5.7/en/mysql-options.html
使用:mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,“gbk”)
(解释:MYSQL_SET_CHARSET_NAME,默认字符集)
连接数据库
原型:MYSQL *mysql_real_connect(
        MYSQL *mysql,
        const char *host,//主机名或IP名,localhost或NULL默认与主机连接
        const char *user, //MySQL登陆ID,NULL为当前用户
        const char *passwd, //用户ID密码
        const char *db, //数据库名称(已存在的)
        unsigned int port, //MySQL服务器端口号(默认3306)
        const char *unix_socket, //一般设置NULL(如果unix_socket不是 NULL,则字符串指定要使用的套接字或命名管道)
        unsigned long client_flag//值client_flag通常为0,其他情况参考:https://dev.mysql.com/doc/refman/5.7/en/mysql-real-connect.html
        )
返回值:NULL为不成功
使用:mysql_real_connect(&mysql, “localhost”, “root”, “123456”, “hello”, 3306, NULL, 0)
数据库连接出错检测
 原型:const char *mysql_error(MYSQL *mysql)
 使用:mysql_error(&mysql)
 返回值:连接成功返回空字符,连接失败返回错误信息
查询数据表信息
 原型:int mysql_query(MYSQL *mysql, const char *stmt_str)
 使用:mysql_query(&mysql, “select * from hello.test”)
 返回值:成功为0,否则非0
说明(const char *stmt_str 为 sql指令)
获取结果集
 原型:MYSQL_RES *mysql_store_result(MYSQL *mysql)
 使用:res = mysql_store_result(&mysql)
检索结果集下一行
 原型:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
 使用:row = mysql_fetch_row(res)
释放结果集
 原型:void mysql_free_result(MYSQL_RES *result)
 使用:mysql_free_result(res)
 说明(完成结果集都要释放)
关闭数据库
 原型:void mysql_close(MYSQL *mysql)
 使用:mysql_close(mysql)
 说明(完成结果集都要释放)

数据库表数据

在这里插入图片描述

示例代码

#include <iostream>
#include "mysql.h"
//#include <mysql.h> 如果配置ok就可以直接包含这个文件
int main(void)
{
	MYSQL mysql;    //一个数据库结构体
	MYSQL_RES* res; //一个结果集结构体
	MYSQL_ROW row;  //char** 二维数组,存放一条条记录
	//初始化数据库
	mysql_init(&mysql);
	//设置编码方式
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
	//连接数据库
	//判断如果连接失败就输出连接失败。
	//注意你连接的账户名密码
	if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "hello", 3306, NULL, 0))
	{
		std::cout << "mysql connect failed!" << mysql_error(&mysql) << std::endl;
	}
	//注意你连接的账户名密码
			//注意你连接的账户名密码
					//注意你连接的账户名密码
							//注意你连接的账户名密码
	//查询数据
	mysql_query(&mysql, "select * from hello.test");
	//获取结果集
	res = mysql_store_result(&mysql);
	//显示数据
	printf("ID\t姓名\t工资\t加入日期\n");
	//给ROW赋值,判断ROW是否为空,不为空就打印数据。
	while (row = mysql_fetch_row(res))
	{
		std::cout << row[0] << '\t' << row[1] << '\t' << row[2] << '\t' << row[3] << std::endl;
	}
	//释放结果集
	mysql_free_result(res);
	//关闭数据库
	mysql_close(&mysql);
	//停留等待
	system("pause");
	return 0;
}

运行结果

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值