当前位置:网站首页>VS通过ODBC连接MYSQL(二)
VS通过ODBC连接MYSQL(二)
2022-07-31 05:15:00 【龙虾在剥我的壳】
一、结果展示


如果你想得到类似这样的数据,接下来的代码或许有所帮助
二、代码分享
#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;
SQLLEN 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);
ret = SQLConnect(serverhdbc, (SQLCHAR*)"vsodbc07", SQL_NTS, (SQLCHAR*)"root", SQL_NTS, (SQLCHAR*)"root", 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)) {
for (int i = 0;i<3; i++) {
if(SQL_NO_DATA != SQLFetch(serverhstmt)){
cout << "cno:" << cno << " cname:" << cname << " semester:" << semester;
cout << "55"<< 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");
}
这两篇博客都是关于VS通过ODBC连接MYSQL
下一篇将分享VS直接连接MYSQL
欢迎交流探讨~
边栏推荐
猜你喜欢

Build DVWA with phpstudy

Gradle sync failed: Uninitialized object exists on backward branch 142

【windows】--- SQL Server 2008 超详细安装教程

Common JVM interview questions and answers

mysql password modification method in Linux (pro-test available)

MySQL压缩包方式安装,傻瓜式教学

The latest MySql installation teaching, very detailed

How MySQL - depots table?A look at will understand

unicloud 发布后小程序提示连接本地调试服务失败,请检查客户端是否和主机在同一局域网下

Principle analysis of famous website msdn.itellyou.cn
随机推荐
js中的this指向与原型对象
Why is the redis single-threaded also so fast?
一文速学-玩转MySQL获取时间、格式转换各类操作方法详解
Filter out egrep itself when using ps | egrep
MySQL高级语句(一)
sql 外键约束【表关系绑定】
著名网站msdn.itellyou.cn原理分析
cocos2d-x 实现跨平台的目录遍历
quick-3.6源码修改纪录
Notes on creating a new virtual machine in Hyper-V
mysql common commands
podspec自动化升级脚本
为什么redis是单线程还那么快?
CMOS管原理,及其在推挽电路中的应用
2021 Mianjing - Embrace Change
MySQL高级SQL语句(二)
Flutter mixed development module dependencies
How to distinguish big and small endian in C language
(Crypto essential dry goods) Detailed analysis of the current NFT trading markets
5 methods of MySQL paging query