全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++连接mysql的方法(直接调用C-API)

我装的是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小时内与您取得联系。