数据库
首页 > 数据库> > 使用visual studio 2017 编写c++程序,基于ODBC驱动连接数据库MySQL5.5+无法打开文件“MRSCOREE.lib”解决方案(转)

使用visual studio 2017 编写c++程序,基于ODBC驱动连接数据库MySQL5.5+无法打开文件“MRSCOREE.lib”解决方案(转)

作者:互联网

part1–安装配置ODBC驱动程序
下载并运行安装包

在控制面板下的管理工具中找到ODBC数据源。双击打开


在【用户DSN】选项卡中单击【添加】按钮,然后选择“MySQL ODBC 8.0 Unicode Driver”


填写配置信息
Data Source Name:数据源名称,可自拟(最好跟项目功能挂钩)
Description:关于此数据源的描述,主要功能等,可不填写
TCP/IP Server:服务器名称,可以是机器名,也可以是IP地址;若是本地可填写“localhost”
Port:MySQL服务的端口号,默认是3306,也可在安装MySQL时自己设定
User:用户名,默认是root,也可在安装MySQL时自己设定
Password:密码
Database:数据库名称
填写完后点击【Test】按钮,测试一下连接是否配置成功。由提示来看,配置已成功。在用户DSN处也查看到了最新创建的ODBC

 


part2
编写程序实现基于ODBC驱动的应用程序
#include<windows.h>
#include<iostream>
#include <assert.h>
#include<sql.h>
#include <sqlext.h>

using namespace std;
int main() {
SQLHENV serverhenv;
SQLHDBC serverhdbc;
SQLHSTMT serverhstmt;
SQLRETURN ret;
SQLCHAR cno[20] = { 0 }, cname[20] = { 0 }, semester[10] = { 10 };
SQLINTEGER grade = 0,length;

//分配环境句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &serverhenv);

//设置环境属性
ret = SQLSetEnvAttr(serverhenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if (!SQL_SUCCEEDED(ret))
{
cout << "AllocEnvHandle error!" << endl;
system("pause");
}
//分配连接句柄
ret = SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);
if (!SQL_SUCCEEDED(ret))
{
cout << "AllocDbcHandle error!" << endl;
system("pause");
}

//数据库连接
ret = SQLConnect(serverhdbc,(SQLCHAR*)"odbc_test(数据源名称)", SQL_NTS,(SQLCHAR*)"root(数据库用户名)", SQL_NTS,(SQLCHAR*)"123456(数据库用户密码)", SQL_NTS);
if (!SQL_SUCCEEDED(ret))
{
cout << "SQL_Connect error!" << endl;
system("pause");
}
//分配执行语句句柄
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
//执行SQL语句
//ret = SQLExecDirect(serverhstmt, (SQLCHAR*)"insert into course values('C01','数据库','春',NULL);", SQL_NTS);//插入数据
//ret = SQLExecDirect(serverhstmt, (SQLCHAR*)"update course set semester='秋' where cno='C01';", SQL_NTS);//修改数据
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)"delete from course where cno='C01';", SQL_NTS);//删除数据
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)"select * from course;", SQL_NTS);

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
//绑定数据
SQLBindCol(serverhstmt, 1, SQL_C_CHAR, (void*)cno, sizeof(cno), &length);
SQLBindCol(serverhstmt, 2, SQL_C_CHAR, (void*)cname, sizeof(cname), &length);
SQLBindCol(serverhstmt, 3, SQL_C_CHAR, (void*)semester, sizeof(semester), &length);
//将光标移动到下行,即获得下行数据
while (SQL_NO_DATA != SQLFetch(serverhstmt))
{
cout << "cno:" << cno << " cname:" << cname << " semester:" << semester;
cout << endl;
}
}
//释放语句句柄
ret = SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);
if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret)
cout << "free hstmt error!" << endl;
//断开数据库连接
ret = SQLDisconnect(serverhdbc);
if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret)
cout << "disconnected error!" << endl;
//释放连接句柄
ret = SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);
if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret)
cout << "free hdbc error!" << endl;
//释放环境句柄句柄
ret = SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);
if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret)
cout << "free henv error!" << endl;
system("pause");
}

运行结果

part3–可能会遇到的问题
vs2017报错:无法打开文件“MRSCOREE.lib”


原因分析:查看官方帮助文档后,判断原因应该是


解决办法
Step1–下载安装Visual Studio Installer(下载地址:https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects)
Step2–在已安装的vs的“更多”选项处选择修改,而后勾选C++的桌面开发 和Windows平台开发,最后点击右下角的“修改”,等待下载安装成功即可。
Step3–安装成功之后重新打开之前的项目文件,就可以顺利运行了

 


————————————————
版权声明:本文为CSDN博主「show-er-打怪之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ilovegem/article/details/113280255

标签:lib,serverhstmt,MySQL5.5,句柄,ODBC,ret,SUCCESS,SQL,cout
来源: https://www.cnblogs.com/xihong2014/p/15303530.html