• 使用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

  • 相关阅读:
    ADF_ADF基本概要(汇总)
    DBA_实践指南系列11_Oracle Erp R12性能调优基础(案例)
    DBA_实践指南系列10_Oracle Erp R12诊断功能Diagnostic(案例)
    DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)
    DBA_实践指南系列8_Oracle Erp R12数据维护模式Adadmin(案例)
    DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)
    DBA_实践指南系列6_Oracle Erp R12工作流通知邮件配置Email(案例)
    DBA_实践指南系列5_Oracle Erp R12日常运维和管理(案例)
    DBA_实践指南系列4_Oracle Erp R12系统备份和恢复Backup(案例)
    DBA_实践指南系列3_Oracle Erp R12系统克隆Clone(案例)
  • 原文地址:https://www.cnblogs.com/xihong2014/p/15303530.html
Copyright © 2020-2023  润新知