C语言连接mysql数据库笔记

C语言连接mysql数据库笔记

一:安装

平台:win10,64bit,工具: vs2017,mysql)

1:mysql的安装 到MySQL官网下载最新版MySQL www.mysql.com

在这里插入图片描述
在这里插入图片描述

进入选择win版本的下载解压,最好新设路径。
复制解压后的mysql到C盘或者其他磁盘下

2:系统设置

我们去系统的环境变量的path里添加一个mysql的配置 指向mysql的bin目录!
在这里插入图片描述在这里插入图片描述
记得点确定哦

配置文件

首先在解压的路径下查看是否含有my.ini的文件,如果没有则新建一个,内容如下:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\Java\mysql-8.0.12-winx64
#这里注意安装目录
# 设置mysql数据库的数据的存放目录
datadir=D:\Java\mysql-8.0.12-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

3:数据库配置

通过管理员权限进入cmd(如果不是管理员权限就会出现问题) ,进入MySQL安装目录的bin目录下
接着输入mysqld --initialize --console,就会出现以下画面,其中标红的为数据库root用户的初始密码(不含首位空格)。在没有更改密码前,需要记住这个密码,后续登录需要用到。复制密码先保存起来!!!当然要是不小心关掉了或者没记住,删掉初始化的 data目录,再执行一遍初始化命令又会重新生成。
在这里插入图片描述
再然后输入mysqld --install安装mysql服务
在这里插入图片描述
如此显示,则安装成功
如果提示 The sercice already exists! 说明mysql服务还在,我们把它删掉,使用sc delete mysql,然后继续执行安装命令
输入net start mysql启动服务,备注:mysqld --remove是卸载MySQL服务,net stop mysql是停止服务
在这里插入图片描述
进入数据库配置
输入mysql -u root -p后会让你输入密码,密码为前面让你记住的密码,输入正确后就会出现如下界面,表示进入了MySQL命令模式
在这里插入图片描述
接着更改密码,输入ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’; 出现如下界面表示更改成功。
到此数据库就安装完成了。

二、使用mysql

对于MySQL,习惯于使用Navicat进行操作,当然也可使用cmd进入mysql,使用sql语句进行操作,看个人喜好。
在这里分享一个Navicat的免费版本,链接: https://pan.baidu.com/s/1O_rUhxmt39hamgiU5CWPcw 密码: x0og 百度网盘下载后减压无需安装,点击.exe文件运行即可,重要的是免费
在这里插入图片描述

三:C语言连接数据库

这里使用vs2017进行操作

创建一个空白项目,对项目属性进行设置

首先在c/c++常规中附加包含目录进行设置 加入include文件

在这里插入图片描述
进入链接器,常规附加库中添加MySQL路径 到bin路径下
在这里插入图片描述
在这里插入图片描述
在输入中输入libmysql.lib
在这里插入图片描述
把三个.dll文件拷贝进system32文件夹里
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
放入下图所在的system32文件夹内
在这里插入图片描述

四:测试

首先需要创建一个表 ,可以使用Navicat或者sql语言创建
此为连接数据库的部分主要代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<mysql.h>//关键头文件
MYSQL conn;//连接数据库
int res;//执行成功的返回值 返回0
MYSQL_RES * result;//获取返回的结果
MYSQL_ROW row;//数据库查询返回的结果集
char select_query1[500];//查询语句
void mian()
{
	mysql_init(&conn);//连接
	mysql_set_character_set(&conn, "gbk");//编码字符集设置 中文编码
	if (mysql_real_connect(&conn, "localhost", "root", "密码", "数据库名", 3306, NULL, 0))//连接条件设定
	printf("coneect mysql successful\n请根据提示选择功能:\n");
	sprintf_s(select_query, "select * from bookinformation(表名)");
		if (mysql_query(&conn, select_query))//
		{
			fprintf(stderr, "查询失败\n");//标准错误输出流对象(stderr)
			system("pause");
			exit(1);
		}
		else
		{
			if ((result = mysql_store_result(&conn)) == NULL)
			{
				fprintf(stderr, "保存结果集失败\n");
				exit(1);
			}
			else
			{
				while ((row = mysql_fetch_row(result)) != NULL)
				{
					printf(":%s\t\t", row[0]);//前四列数据
					printf(":%s\t\t", row[1]);
					printf(":%s\t\t", row[2]);
					printf(":%s\t\n", row[3]);
				}
			}
		}
//数据更新
printf("请输入需要更改的书名:\n");
		gets_s(strf);//获取缓存
		gets_s(strf);//改前
		printf("请输入需要更改的书名的价格:\n");
		gets_s(stre);//改后
		sprintf_s(update_query, " update bookinformation set Price='%s'where Bookname='%s'", stre, strf);
res = mysql_query(&conn, update_query);//先连接数据库修改成功
		if (!res)//成功的返回值为0
			printf("update %lu rows \n", (unsigned long)mysql_affected_rows(&conn));//修改成功提示
	}
部分函数解释:

1: sprint(select_qurey,”xxxxxxx”); 将””中的内容作为字符放入字符select_query数组中。
2: Mysql_query(&coon,select_query);连接数据库对数组中的内容进行执行
3: mysql_query 是一个计算机函数,向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询
4: mysql_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接
5: mysql_set_character_set 该函数用于为当前连接设置默认的字符集
int mysql_set_character_set(MYSQL *mysql, char *csname)
若在row[x]中返回的列是以字符集的形式返回,对其输出使用%s, 若要将其转化为int整形,可使用atoi函数进行转换, atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数

				int a;
				a =atoi(row[1]);

一点心得就到这里了

第一次写 望大佬指正

pluto_rx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值