zoukankan      html  css  js  c++  java
  • C++使用Mysql的详细步骤及各个常用方法的代码演示:select,insert,update,delete

    这几天一直在学习C++下使用Mysql的方法及其中各种的问题,也看了很多Mysql的API函数,当然自己看的还是很基础的。其实对于每种数据库的操作,基本的方法都是非常类似的,大多都是connect,select,update,delete以及insert这几个操作。接下来我就将这几个步骤以代码的方式展现给大家,相信应该能对大家对mysql的编程起到一个基础模板的作用,方便大家以后对mysql数据库的了解和学习。

    1.mysql的初始化initConnection:

    1)mysql_init():初始化数据库

    2)mysql_real_connect()(不推荐用Mysql_connect()):连接数据库

    详细代码如下:

     1 bool dataBase::initConnection() {
     2     try {
     3         if (mysql_init(&m_sqlCon) == NULL) {
     4             std::cout << "初始化数据库失败" << std::endl;
     5             return false;
     6         }
     7         // localhost:服务器 root为账号密码 test为数据库名 3306为端口    
     8         if (!mysql_real_connect(&m_sqlCon, host, user, pass,databaseName, port, NULL, 0))
     9         {
    10             std::cout << "数据库连接失败" << std::endl;
    11             return false;
    12         }
    13         std::cout << "数据库连接成功" << std::endl;
    14         return true;
    15     }
    16     catch (...)
    17     {
    18         std::cout << "出错啦" << std::endl;
    19         return false;
    20     }
    21 }

    2.mysql的查询select:

    1)mysql_query():进行查询语句

    2)mysql_store_result():获得查询结果

    3)mysql_fetch_field()以及mysql_fetch_row():获得结果集中的内容

    4)mysql_free_result()

    代码如下:

     1 void dataBase::user_query() {
     2     if (mysql_query(&m_sqlCon, "select * from user")) {
     3         std::cout << "查询失败" << std::endl;
     4         return;
     5     }
     6     std::cout << "查询成功" << std::endl;
     7     MYSQL_RES *result;
     8     result = mysql_store_result(&m_sqlCon);
     9     if (result) {
    10         int row_num,col_num;
    11         row_num = mysql_num_rows(result);
    12         col_num = mysql_num_fields(result);
    13         std::cout << "共有" << row_num << "条数据,以下为其详细内容:" << std::endl;
    14         MYSQL_FIELD *fd;
    15         while (fd = mysql_fetch_field(result)) {
    16             std::cout << fd->name << "	";
    17         }
    18         std::cout << std::endl;
    19         MYSQL_ROW sql_row;
    20         while (sql_row = mysql_fetch_row(result)) {
    21             for (int i = 0; i < col_num; i++) {
    22                 if (sql_row[i] == NULL) std::cout << "NULL	";
    23                 else std::cout << sql_row[i] << "	";
    24             }
    25             std::cout << std::endl;
    26         }
    27     }
    28     if(result!=NULL)
    29     mysql_free_result(result);
    30 
    31 }

    3.mysql的插入语句insert:

    1)mysql_query()通过select判断是否已经存在(可以省略)

    2)通过mysql_query()进行插入

    代码如下:

     1 void dataBase::user_insert(UserBody &body) {
     2     char select_user[255];
     3     char query[255];
     4     MYSQL_RES *result;
     5     sprintf(select_user, "select * from user where UserName='%s'", body.userName);
     6     if (mysql_query(&m_sqlCon, select_user)||!(result = mysql_store_result(&m_sqlCon))) {
     7         std::cout << "插入查询失败" << std::endl;
     8         return;
     9     }
    10     if (mysql_num_rows(result)) {
    11         std::cout << "用户已存在" << std::endl;
    12         mysql_free_result(result);
    13         return;
    14     }
    15     mysql_free_result(result);
    16     sprintf(query, "insert into user(UserName,UserPass,ConnectionNum,UseFor) values('%s','%s',%d,%d)", body.userName, body.userPass, body.connection, body.type);
    17     if (mysql_query(&m_sqlCon, query)) {
    18         std::cout << "插入数据失败" << std::endl;
    19         return;
    20     }
    21     std::cout << "插入数据成功,共插入:" <<mysql_affected_rows(&m_sqlCon)<<"" << std::endl;
    22 }

    4.mysql的修改语句update

    修改与添加的步骤类似,直接贴出代码就不做赘述了。

    代码如下:

     1 void dataBase::user_update(UserBody &body) {
     2     char query[255];
     3     char select_user[255];
     4     MYSQL_RES *result;
     5     sprintf(select_user, "select * from user where UserName='%s'", body.userName);
     6     if (mysql_query(&m_sqlCon, select_user) || !(result = mysql_store_result(&m_sqlCon))) {
     7         std::cout << "修改查询失败" << std::endl;
     8         return;
     9     }
    10     if (mysql_num_rows(result) == 0) {
    11         std::cout << "要修改的用户不存在" << std::endl;
    12         mysql_free_result(result);
    13         return;
    14     }
    15     mysql_free_result(result);
    16     sprintf(query, "update user set UserPass='%s',ConnectionNum=%d,UseFor=%d where UserName='%s'", body.userPass, body.connection, body.type, body.userName);
    17     if (mysql_query(&m_sqlCon, query)) {
    18         std::cout << "修改失败" << std::endl;
    19         return;
    20     }
    21     std::cout << "修改成功,共修改:" << mysql_affected_rows(&m_sqlCon) << "" << std::endl;
    22 }

    5.mysql的删除操作delete

    其实删除、修改和插入操作都是类似的,会其中一个其他应该都差不多了,我也就直接贴出代码了。

    代码如下:

     1 void dataBase::user_delete(char *userName) {
     2     char query[255];
     3     char select_user[255];
     4     MYSQL_RES *result;
     5     sprintf(select_user, "select * from user where UserName='%s'", userName);
     6     if (mysql_query(&m_sqlCon, select_user)||!(result = mysql_store_result(&m_sqlCon))) {
     7         std::cout << "删除查询失败" << std::endl;
     8         return;
     9     }
    10     if (mysql_num_rows(result)==0) {
    11         std::cout << "要删除的用户不存在" << std::endl;
    12         mysql_free_result(result);
    13         return;
    14     }
    15     mysql_free_result(result);
    16     sprintf(query, "delete from user where UserName='%s'", userName);
    17     if (mysql_query(&m_sqlCon, query)) {
    18         std::cout << "删除失败" << std::endl;
    19         return;
    20     }
    21     std::cout << "删除成功,共删除:" << mysql_affected_rows(&m_sqlCon) << "" << std::endl;
    22 }

    以上算是对Mysql中常用的一些代码的总结,有什么不完善的希望大家能够提出来,也希望这个能在平时帮到大家,起到一个模板的作用,也能方便大家对mysql的学习。我也属于一个learner,也希望能和大家在平时中相互学习。

    转载请注明出处:http://www.cnblogs.com/fnlingnzb-learner/p/5829556.html。谢谢

  • 相关阅读:
    路径变量@PathVariable/请求参数@RequestParam的绑定以及@RequestBody
    JSR303后端校验详细笔记
    创建ssm项目步骤
    利用 R 绘制拟合曲线
    在 Linux 中将 Caps 根据是否为修饰键分别映射到 esc 和 Ctrl
    Master Transcription Factors and Mediator Establish Super-Enhancers at Key Cell Identity Genes
    Genomic Evidence for Complex Domestication History of the Cultivated Tomato in Latin America
    Variation Revealed by SNP Genotyping and Morphology Provides Insight into the Origin of the Tomato
    The genetic, developmental, and molecular bases of fruit size and shape variation in tomato
    微信支付jsapi
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/5829556.html
Copyright © 2011-2022 走看看