当前位置:网站首页>VS2017连接MYSQL
VS2017连接MYSQL
2022-07-31 05:15:00 【龙虾在剥我的壳】
一、环境配置
第一步:
属性管理器—>属性—>C/C+±–>常规—>附加包含目录(添加mysql下的include文件夹的路径)
第二步:
链接器—>常规—>附加库目录,把mysql文件里的lib文件的路径添加进去
第三步:
链接器—>输入—>附加依赖项,将libmysql.lib写入
第四步:
把静态库libmysql.lib复制放到解决方案的x64下的debug文件目录下
因为有多个Debug 若不确定复制到哪一个Debug下,可以在多个Debug都复制过去
这步完成,环境就配置结束了,那我们怎么确认是否有问题呢?接下来我们来进行测试
二、连接测试
打开VS2017—>工具—>连接到数据库,在数据源里选择MySQL Database
填写:数据库名、用户名及密码和数据库表名
点击测试连接,若出现测试连接成功,我们就可以在VS里对数据库进行增删改查等操作了
这是数据库
三、代码实现
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<Windows.h>
#include<WinSock.h>
#include<mysql.h>
using namespace std;
#pragma comment(lib,"libmysql.lib")
#pragma comment(lib,"wsock32.lib")
MYSQL *mysql = new MYSQL; //mysql连接
MYSQL_FIELD *fd; //字段列数组
char field[32][32]; //存字段名二维数组
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列
char query[150]; //查询语句
bool ConnectDatabase();
bool QueryDatabase1();
//bool QueryDatabase2();
int main() {
ConnectDatabase();
QueryDatabase1();
//QueryDatabase2();
system("pause");
return 0;
}
bool ConnectDatabase() {
//初始化mysql
mysql_init(mysql);
//返回false则连接失败,返回true则连接成功
if (!(mysql_real_connect(mysql, "localhost", "root", "root", "test", 3306, NULL, 0))) //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
{
printf("Error connecting to database02:%s\n", mysql_error(mysql));
return false;
}
else {
printf("Connected...\n");
return true;
}
return true;
}
bool QueryDatabase1() {
sprintf_s(query, "select * from t_news"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以
mysql_query(mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码
//返回0 查询成功,返回1查询失败
if (mysql_query(mysql, query)) //执行SQL语句
{
printf("Query failed (%s)\n", mysql_error(mysql));
return false;
}
else {
printf("query success\n");
}
//获取结果集
if (!(res = mysql_store_result(mysql))) //获得sql语句结束后返回的结果集
{
printf("Couldn't get result from %s\n", mysql_error(mysql));
return false;
}
//打印数据行数
printf("number of dataline returned: %lld\n", mysql_affected_rows(mysql));
//获取字段的信息
char *str_field[32]; //定义一个字符串数组存储字段信息
for (int i = 0; i < 6; i++) //在已知字段数量的情况下获取字段名
{
str_field[i] = mysql_fetch_field(res)->name;
}
for (int i = 0; i < 3; i++) //打印字段
printf("%10s\t", str_field[i]);
printf("\n");
//打印获取的数据
while (column = mysql_fetch_row(res)) //在已知字段数量情况下,获取并打印下一行
{
printf("%10s\t%10s\t%10s\t%10s\t%10s\t%10s\n", column[0], column[1], column[2], column[3], column[4], column[5]); //column是列数组
}
return true;
}
四、结果展示
五、扩展
5.1 每次新建项目,都需要重新配置数据库环境,有个一劳永逸的方法,即:建一个项目属性表,之后的项目,直接添加配置完成的表就行,无需每次配环境.若有需要,可参考以下文章:
Visual Studio(VS)将工程配置保存到属性表
vs如何将工程配置,保存到属性表
5.2 mysql和vtk等库环境可以一起配在一个属性表里
欢迎大家交流探讨!
边栏推荐
- Judgment of database in SQL injection
- feign调用不通问题,JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r
- npm WARN config global `--global`, `--local` are deprecated. Use `--location solution
- kotlin 插件更新到1.3.21
- sqlite 查看表结构 android.database.sqlite.SQLiteException: table splitTable has no column named
- 2021 Mianjing - Embrace Change
- What is an EVM Compatible Chain?
- this指向问题
- The feign call fails, JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r
- mysql common commands
猜你喜欢
随机推荐
GUCCI, LV and other luxury giant universe how to layout yuan, other brands should keep up with?
quick-3.5 ActionTimeline的setLastFrameCallFunc调用会崩溃问题
mysql password modification method in Linux (pro-test available)
纯shell实现文本替换
为什么redis是单线程还那么快?
podspec 校验依赖出错问题 pod lib lint ,需要指定源
Judgment of database in SQL injection
Getting to know regular expressions
this points to the problem
自定dialog 布局没有居中解决方案
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
Flow control statement in js
Gradle sync failed: Uninitialized object exists on backward branch 142
js中的break与continue退出
cocoscreator3.5.2打包微信小游戏发布到QQ小游戏修改
阿里云中mysql数据库被攻击了,最终数据找回来了
网页截图与反向代理
Year-end summary - the years are quiet~
微信小程序源码获取与反编译方式
Build DVWA with phpstudy