我装的是5.1版本,需要的头文件有
把需要的文件添加进去,然后再把 libmysql.lib放到项目目录里,文件在mysql安装目录 lib 下面.
#include "stdafx.h"
#include <iostream>
#include <winsock2.h>
#include "mysql.h"
//#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib,"libmysql.lib")
using namespace std;
int main(int argc, char* argv[])
{
mysql_library_init(NULL,0,0);
MYSQL mysql;
mysql_init(&mysql);
if(0==mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8"))//设置字符集
{
cout << "设置字符集成功\n\n" <<endl;
}
if(!mysql_real_connect(&mysql,"localhost","root","kwgkwg","test",0,NULL,CLIENT_MULTI_STATEMENTS))//连接数据库
{
cout << "not connect mysql" << endl;
}else
{
cout << "welcome to mysql\n\n\n";
}
mysql_query(&mysql,"select * from demo1"); //执行SQL语句
MYSQL_RES *result=mysql_store_result(&mysql); //获取资源
int rowcount=mysql_num_rows(result); //获取记录数
unsigned int fieldcount=mysql_num_fields(result); //获取字段数
//cout << rowcount << endl;
MYSQL_FIELD *field=NULL; //字段
MYSQL_ROW row=NULL; //记录
while(row=mysql_fetch_row(result))
{
for(unsigned int i=0;i<fieldcount;i++)
{
field=mysql_fetch_field_direct(result,i);
cout<<field->name<<":"<<row[i] <<"\n";
}
}
mysql_free_result(result);
mysql_close(&mysql);
mysql_server_end();
mysql_library_end();
return 0;
}
C++访问 (直接调用C-API)
#include <iostream>
#include <windows.h>
#include <mysql.h>
#include <string>
static const char host[32] = "localhost";
static const char user[32] = "test";
static const char passwd[32] = "passwd";
static const char db[32] = "test";
/**
mysql> select * from t;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> delimiter //
mysql> create procedure get_t(in t1 int)
-> begin
-> select id from t where id=t1;
-> end
-> //
Query OK, 0 rows affected (0.05 sec)
mysql> call get_t(1);
-> //
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
*/
void test_more_results(MYSQL* h)
{
char str[512] = "insert into test_num values(101);insert into test_num values(122);commit;";
int r = mysql_real_query(h, str, strlen(str));
if (r)
{
const char * error = mysql_error(h);
std::cout<<"*** Connection Error " << error << std::endl;
}
do
{
MYSQL_RES* res = mysql_store_result(h);
mysql_free_result(res);
}
while ( (0 == mysql_next_result(h)) );
}
void test_proc_stmt(MYSQL* h)
{
MYSQL* mysql_ = h;
MYSQL_BIND bind;
MYSQL_BIND obind[1];
// test_more_results(mysql_);
MYSQL_STMT *hStmt = mysql_stmt_init(mysql_);
my_bool true_value= 1;
mysql_stmt_attr_set(hStmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void*) &true_value);
char sql[] = "call get_t(?)";
//char sql[] = "select id from t where id=?";
if (mysql_stmt_prepare(hStmt, sql, strlen(sql)))
{
std::cout<<__LINE__<<": stmt prepare error: "<< (mysql_stmt_error(hStmt))<<std::endl;
mysql_stmt_reset(hStmt);
if (mysql_stmt_prepare(hStmt, sql, strlen(sql)))
{
std::cout<<__LINE__<<": stmt prepare error: "<< (mysql_stmt_error(hStmt))<<std::endl;
mysql_close(mysql_);
exit( -1);
}
}
int id = 1;
unsigned long id_len = 0;
memset(&bind, 0, sizeof(bind));
bind.buffer_type = FIELD_TYPE_LONG;
bind.buffer = (void*)&id;
bind.is_unsigned = true;
bind.length = &id_len;
// bind[0].buffer_length = sizeof(id);
// bind[0].is_null = 0;
if (mysql_stmt_bind_param(hStmt,(MYSQL_BIND*)(&bind)) != 0)
{
std::cout<<__LINE__<<": stmt prepare error: "<< (mysql_stmt_error(hStmt))<<std::endl;
mysql_close(mysql_);
exit( -1);
}
if (mysql_stmt_execute(hStmt) != 0)
{
std::cout<<__LINE__<<": stmt prepare error: "<< (mysql_stmt_error(hStmt))<<std::endl;
mysql_close(mysql_);
exit( -1);
}
int t2;
memset(obind, 0, sizeof(obind));
obind[0].buffer_type= MYSQL_TYPE_LONG;
obind[0].buffer= (char *)&t2;
obind[0].buffer_length = sizeof(t2);
if (mysql_stmt_bind_result(hStmt, (MYSQL_BIND*)&obind[0]) != 0)
{
std::cout<<__LINE__<<": stmt prepare error: "<< (mysql_stmt_error(hStmt))<<std::endl;
mysql_close(mysql_);
exit( -1);
}
if ( mysql_stmt_store_result(hStmt) != 0 )
{
std::cout<<__LINE__<<": stmt prepare error: "<< (mysql_stmt_error(hStmt))<<std::endl;
mysql_close(mysql_);
exit( -1);
}
int rows = mysql_stmt_num_rows(hStmt);
for (int i=0; i<rows; i++)
{
if (mysql_stmt_fetch(hStmt) == 0)
{
std::cout<<"id = "<<t2<<std::endl;
}
}
mysql_stmt_free_result(hStmt);
mysql_stmt_close(hStmt);
}
//
// Just for demo only.
//
int main()
{
MYSQL* mysql_ = NULL;
MYSQL_RES* result_ = NULL;
MYSQL_ROW row_;
mysql_ = mysql_init(mysql_);
// if (mysql_real_connect(mysql_, host, user, passwd, db, 3306, NULL, CLIENT_MULTI_STATEMENTS) == NULL)
if (mysql_real_connect(mysql_, host, user, passwd, db, 3306, NULL, CLIENT_MULTI_STATEMENTS) == NULL)
{
const char * error = mysql_error(mysql_);
std::cout<<"*** Connection Error " << error << std::endl;
return -1;
}
mysql_autocommit(mysql_, false);
std::string encodeStr = "set names 'gbk'";
mysql_real_query(mysql_, encodeStr.c_str(), encodeStr.size());
/*
const char* tmpTableName = "t"; // assume you are querying the table 't'
char str[512];
int cnt = 0;
sprintf(str,"select count(*) as cnt from %s", tmpTableName);
mysql_real_query(mysql_, str, strlen(str));
result_ = mysql_store_result(mysql_);
while (row_ = mysql_fetch_row(result_))
{
// get the field value
if (row_[0])
{
std::cout<<"count = "<<row_[0]<<std::endl;
// convert it into int
cnt = atoi(row_[0]);
std::cout<<"cnt value = "<<row_[0]<<std::endl;
}
}
mysql_free_result(result_);
test_more_results();
*/
test_proc_stmt(mysql_);
do
{
MYSQL_RES* res = mysql_store_result(mysql_);
mysql_free_result(res);
}
while ( (0 == mysql_next_result(mysql_)) );
test_proc_stmt(mysql_);
mysql_close(mysql_);
return 0;
}
这样就差不多了,大家可以根据需要选择。
# C++
# mysql
# C/C++ 连接MySql数据库的方法
# C++连接mysql数据库的两种方法小结
# C++连接使用MySQL的方法
# C++连接并使用MySQL数据库
# C++连接mysql数据库并读取数据的具体步骤
# C++连接mysql数据库(改进版)
# 的是
# 可以根据
# 再把
# 就差
# 安装目录
# 头文件
# 连接数据库
# 直接调用
# 不多了
# field
# mysql_num_fields
# fieldcount
# MYSQL_FIELD
# MYSQL_ROW
# mysql_fetch_row
# mysql_fetch_field_direct
# row
# mysql_free_result
# SQL
# MYSQL_RES
相关文章:
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何快速搭建二级域名独立网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
网站制作需要会哪些技术,建立一个网站要花费多少?
如何在Windows环境下新建FTP站点并设置权限?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何快速生成专业多端适配建站电话?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
建站之星如何取消后台验证码生成?
如何用搬瓦工VPS快速搭建个人网站?
建站上市公司网站建设方案与SEO优化服务定制指南
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何选择高效便捷的WAP商城建站系统?
如何用狗爹虚拟主机快速搭建网站?
制作网站外包平台,自动化接单网站有哪些?
已有域名能否直接搭建网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何零基础开发自助建站系统?完整教程解析
如何快速完成中国万网建站详细流程?
网页设计与网站制作内容,怎样注册网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
无锡营销型网站制作公司,无锡网选车牌流程?
建站之星如何开启自定义404页面避免用户流失?
如何选购建站域名与空间?自助平台全解析
电商网站制作公司有哪些,1688网是什么意思?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何选择网络建站服务器?高效建站必看指南
香港服务器网站推广:SEO优化与外贸独立站搭建策略
专业商城网站制作公司有哪些,pi商城官网是哪个?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在万网开始建站?分步指南解析
如何在阿里云ECS服务器部署织梦CMS网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
网站代码制作软件有哪些,如何生成自己网站的代码?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何快速建站并高效导出源代码?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在Golang中引入测试模块_Golang测试包导入与使用实践
建站之星展会模版如何一键下载生成?
建站之星安装后界面空白如何解决?
制作营销网站公司,淘特是干什么用的?
如何解决ASP生成WAP建站中文乱码问题?
如何有效防御Web建站篡改攻击?
制作网站的软件免费下载,免费制作app哪个平台好?
html制作网站的步骤有哪些,iapp如何添加网页?
如何用AWS免费套餐快速搭建高效网站?
网站企业制作流程,用什么语言做企业网站比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。