C语言操作数据库

基于C语言的控制数据库脚本

开发环境基础

编译器:Visual Studio Community 2022
数据库:MySQL 8.0.37 Community

前戏准备

  1. 复制文件和路径
    找到MYSQL的安装目录
  • 复制“lib文件夹里的libmysql.dll文件”
    例:
  • 复制目录下include和lib两个文件夹的路径
    例:
    D:\MySQL\include
    D:\MySQL\bin
  1. VS环境配置
  • 在Visual Studio 2022新建空项目
  • 项目->属性->配置属性->VC++目录->分别将include和lib文件夹的路径添加到包含目录和库目录
  1. 文件导入
    将libmysql.dll文件粘贴到Visual Studio 2022项目文件夹下
    例:

代码编写

#include<stdio.h>
#include<stdlib.h>
#include <winsock.h>
#include <mysql.h>
#pragma comment (lib, "libmysql.lib")

int main()
{
	//变量定义
	MYSQL* conn; //数据库连接句柄
	MYSQL_RES* res; //执行数据库语言结果
	MYSQL_ROW row; //存放一个数据记录
	char* server = "localhost";//本地连接
	char* user = "root";//
	char* password = "123456";//mysql密码
	char* database = "mysql_test";//数据库名
	char* query = "select * from student";//需要查询的语句
	int t;

	conn = mysql_init(NULL); //句柄初始化

	//尝试连接到数据库
	if (!mysql_real_connect(conn, server, user, password, database, 3306, NULL, 0))  //判断是否连接成功
	{
		printf("Error connecting to database:%s\n", mysql_error(conn));
	}
	else
	{
		printf("Connected...\n");
	}

	//字符编码,解决乱码
	if (!mysql_set_character_set(conn, "gbk"))
	{
		printf("New client character set: %s\n",
			mysql_character_set_name(conn));
	}

	//调用API根据用户输入的Query对数据库操作
	if (mysql_query(conn, query))
	{
		printf("Error making query:%s\n", mysql_error(conn));
	}
	else
	{
		printf("Query made...\n");
		res = mysql_use_result(conn);	//获取结果
		if (res)
		{
			while ((row = mysql_fetch_row(res)) != NULL)
			{
				//printf("num=%d\n",mysql_num_fields(res));//列数
				for (t = 0; t < mysql_num_fields(res); t++)
					printf("%8s ", row[t]);
				printf("\n");
			}
		}
		mysql_free_result(res);   //释放res占用的内存空间
	}
	mysql_close(conn); //断开数据库
	//system("pause");
	return 0;
}

MYSQL搭建测试数据库

  1. 新建测试数据库
drop database if exists mysql_test cascade;
create database mysql_test;
use mysql_test;
  1. 创建学生表
create table student (
	s_id int,
	s_name varchar(8),
	s_birth date,
	s_sex varchar(4)
);
  1. 插入学生数据
insert into student values
(1,'赵雷','1990-01-01','男'),
(2,'钱电','1990-12-21','男'),
(3,'孙风','1990-05-20','男'),
(4,'李云','1990-08-06','男'),
(5,'周梅','1991-12-01','女'),
(6,'吴兰','1992-03-01','女'),
(7,'郑竹','1989-07-01','女'),
(8,'王菊','1990-01-20','女');

代码测试

  1. 编译
    生成->重新生成解决方案
    出现:“全部重新生成:1成功,0失败,0已跳过”即编译完成,无错误

  2. 调试
    ->按下调试按钮F5
    运行成功,如图所示

  3. 报错

  • 错误
    编译时出现C2440,E0144这两个报错代码
  • 解决办法
    项目->属性->C/C++->语言->符合模式->将“是”改为“否”
posted @ 2025-04-26 15:41  呆住的河豚  阅读(129)  评论(0)    收藏  举报