zoukankan      html  css  js  c++  java
  • VC连接MySql

                            VC连接MySql

    一丶MySql 需要了解的知识

     VC连接MySql 需要了解几个关键的API:

      MYSQL * stdcall mysql init (MYSQL *mysql):  初始化一个数据库.如果传NULL.则返回一个数据库对象

      mysql_real connect(); 与MySql 数据库创建连接

      mySql_close() 关闭连接释放对象.如果自动分配的.也就是init传的NULL. 则自动释放.

      mysql_select_db 选择一个数据库. 相当于sql语句 use database 数据库名

      mysql_ query  sql查询.

      mysql_store_resul 如果调用来的sql查询.那么必须调用它.保存查询结果.并且返回这个数据库的结果集.

      mysql_set_ character  等价于 set names 设置编码格式.

      mysql _freeresult 释放结果集使用的内存.

    二丶VS2015 配置库目录以及包含目录.使用MySql

      1.要包含mysql的include目录.以及lib下的opt目录.

      2.包含头文件 mysql.h 以及使用库 #pragma comment(lib,"libmysql.lib")

     首先我们VS2015 打开项目属性.点击我们的VC++目录设置我们的包含目录以及库目录.

    mysql是你安装的目录.include以及lib都在他的目录下. 你可以使用Everything 搜索一下Mysql 看看你的mysql放哪里了.

    例如:

      C:Program Files (x86)MySQLMySQL Server 5.0include  我的是在C盘.

      c:xxxxMySQLmySql Server 5.0libopt;                            库目录

    下图为设置.

     包含我们的头文件

    #include "mysql.h"
    #pragma comment(lib,"libmysql.lib")

    如果编译出错.可能会显示socket的字样.那是因为mysql用了socket

    我们还需要加载一个头文件.

    #include <winsock2.h>

    三丶数据库连接代码示例

    我们可以下载一个MySql 手册. 可以查看 API 跟库.

     

    我们常见的属性也列举出来了.

    1.初始化跟连接数据库的代码

    // 1.初始化MySql
        MYSQL *pMySql;
        pMySql = mysql_init(NULL);  //因为我们不是new的自动创创建
        if (NULL == pMySql)
        {
            AfxMessageBox(TEXT("数据库连接失败"));
            return;
    
        }
        //2.与我们的数据库创建连接
        /*
        1.我们的MySql指针
        2.我们数据库的IP地址
        3.数据库用户名
        4.数据库的用户密码.
        5.db 为数据库名称
        6.端口
        7.linux下的.给NULL
        8.协议
        使用Show processlist; 可以查看数据库当前连接
        */
    
        if (!mysql_real_connect(pMySql, LOCAL_HOST, "root", "123456", NULL, 3306, NULL, NULL))
        {
            AfxMessageBox(TEXT("数据库连接失败"));
            return;
       }

    调用mysql_real_connect 的时候.给定属性即可.

    我们可以看下我们当前的连接 使用 show processlist;

    可以看到.ID 为6的使我们的连接. 只不过数据库名字我们没有选中.我们可以设置选中

    2.设置我们的数据库.

       //3.设置我们的数据库
        /*
        1.我们的sql句柄
        2.我们要选择的数据库的名称  use daatabse 数据库名
        */
        mysql_select_db(pMySql, "newtest"); 
       

    这样我们就会使用newtest这个数据库了.

    三丶数据库的查询.获取结果集.提取结果集

    这里总共分三步.

    1.我们使用sql 语句查询结果.

    2.查询完毕之后.我们还需要使用api.来接受这个结果.

    3.结果里面很多东西.所以我们还要使用API 进行进一步的提取.

    //4.查询.返回结果集. 提取结果集
    
        /*
        1.sql 句柄
        2.查询语句
        */
        if (!mysql_query(pMySql, "select *from stu"))
        {
            AfxMessageBox(TEXT("数据库查询失败"));
            return;
       }
        //获取结果集
        MYSQL_RES pres; //结果集结构体
        pres = mysql_store_result(pMySql);
        if (NULL ==pres)
        {
            AfxMessageBox(TEXT("获取结果集失败"));
            return;
        }
        //提取结构
        MYSQL_FIELD *fd;
        //使用API获取,循环获取.不断获取.直到为0   遍历字段名
        for (size_t i = 0; fd = mysql_fetch_field(pres); i++)
        {
            printf("%s", fd->name);//打印出字段名
        }
        //遍历字段中的数据.
        // 结果集中有一个 rowcount 表示多少行数据.所以遍历
    
        MYSQL_ROW row;
        CString str;
        while (row = mysql_fetch_row(pres));
        {
                //输出我们的字段
            str = "";
            str.Format(TEXT("字段1 %s 字段2 %s 字段3 %s"), row[0], row[1], row[2]);
            AfxMessageBox(str);
        }

    最后我们要关闭结果集.以及数据库连接

    mysql_close();

    mysql_free_result();

    如果我们查询乱码.那么还需要设置我们的结果集.

    mysql_set_character_set(数据库句柄,"gbk");

    4.创建数据库

    mysql_create_db():

    具体函数可以查询参考手册

     

  • 相关阅读:
    【LOJ#6277】数列分块1
    【LOJ6284】数列分块8
    【洛谷P3275】糖果
    【洛谷P3810】陌上花开
    【洛谷P1052】过河 离散化+dp
    【洛谷P2042】维护数列
    【模板】文艺平衡树
    【洛谷P4145】花神游历各国
    【洛谷P4878】布局
    hdu 5748(LIS)
  • 原文地址:https://www.cnblogs.com/iBinary/p/9669096.html
Copyright © 2011-2022 走看看