补档
编写于2021.3.10 C语言课程设计期间
1.由于找不到libmysql.dll/由于找不到libssl-1_1-x64.dll,无法继续执行代码
在项目属性页的“配置属性”-“调试”-“环境” 中编辑,把环境设置为数据库的bin文件夹即可,注意末尾分号要用半角的。
PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin;
PS:必须是bin!!!否则提示找不到libmysql.dll/由于找不到libssl-1_1-x64.dll
2.把libmysql.lib和libmysql.dll两个文件复制粘贴到
..\ConsoleApplication3\ConsoleApplication3路径下(ConsoleApplication3为项目名称)
注意VS2017中“调试“和”生成“是两个不同体系的调试器,需要分别进行以上两步配置!
3.
1)若生成的(.exe)可执行文件运行时提示找不到libmysql.dll,则把该文件放在可执行文件目录即可;
2)若生成的(.exe)可执行文件运行时提示找不到libcrypto-1_1-x64.dll,不要在网上下载该文件,否则会报错道:无法定位程序输入点,程序找不到入口。原因是从网上下载的dll和mysql的bin目录中的dll虽然名字相同,但是dll内部的日期等参数不同,出现冲突,程序找不到入口,无法运行。正确的打开方式为:在mysql的Server目录下查找libcrypto-1_1-x64.dll文件,并把该文件复制到可执行文件目录或系统dll目录下。(注意区分32/64位系统)
4.检查链接器——>>输入
附加依赖项:libmysql.lib
(不用设置也可,把libmysql.lib文件放在可执行文件目录即可)
另附一段可正常运行的测试代码:
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib,"libmysql")
#include <mysql.h>
#define HOST "localhost" //在本机上不要写IP
#define USERNAME "root"
#define PASSWORD "20011216"
#define DBNAME "mysql" //安装MySQL初始化的默认表
MYSQL mysql;
MYSQL_RES *res; //结果集
MYSQL_ROW row; //结果集的单位字段
int main() {
// 初始化MYSQL变量
if (NULL != mysql_init(&mysql))
printf("init succeed!\n");
else
{
printf("init failed!\n");
return -1;
}
// 连接Mysql服务器,本例使用本机作为服务器。访问的数据库名称为"msyql",参数中的user为你的登录用户名,***为登录密码,需要根据你的实际用户进行设置
if (!mysql_real_connect(&mysql, HOST, USERNAME, PASSWORD, DBNAME, 3306, NULL, 0))
{
printf("connect failed!\n");
return -1;
}
else
printf("connect succeed!\n");
// 查询mysql数据库中的user表
if (mysql_real_query(&mysql, "select * from user", (unsigned long)strlen("select * from user")))
{
printf("mysql_real_query failure!\n");
return -1;
}
// 存储结果集
res = mysql_store_result(&mysql);
if (NULL == res)
{
printf("mysql_store_result failure!\n");
return -1;
}
// 重复读取行,并输出第一个字段的值,直到row为NULL
while (row = mysql_fetch_row(res))
{
printf("%s", row[0]);
}
// 释放结果集
mysql_free_result(res);
// 关闭Mysql连接
mysql_close(&mysql);
printf("\nclose succeed!\n");
return 0;
}
Comments 1 条评论
博客作者 Evonne Gentes
You actually make it appear really easy together with your presentation however I find this matter to be actually something which I feel I might by no means understand. It sort of feels too complicated and extremely wide for me. I am taking a look forward for your subsequent put up, I’ll try to get the hang of it!