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–安装成功之后重新打开之前的项目文件,就可以顺利运行了

 

————————————————

版权声明:本文为博主「show-er-打怪之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。