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)\MySQL\MySQL Server 5.0\include\ 我的是在C盘.

  c:xxxx\MySQL\mySql Server 5.0\lib\opt; 库目录

下图为设置.

包含我们的头文件

#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():

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Vc数据库编程基础MySql数据库的常见库命令.跟表操作命令

        alter database 数据库名字 default character set 编码格式 collate 编码格式_in

    IBinary
  • Vc数据库编程基础1

        数据库简单连接就是存储数据的容器. 而库则是一组容器合成的东西. 也就是存储数据的.我们编程中常常会用到数据库.

    IBinary
  • MySql数据库安装

        数据库简单连接就是存储数据的容器. 而库则是一组容器合成的东西. 也就是存储数据的.我们编程中常常会用到数据库.

    IBinary
  • MongoDb数据库学习基础语法(一)

    打开数据库: mongod --dbpath E:\数据库目录名 --dbpath是选择数据库所在的文件夹 开机之后cmd不能关闭 关闭数据库: ...

    黄林晴
  • MySQL常见错误码及说明

    1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败<=================可以忽略 1008:数据库不存在,删除...

    joshua317
  • 在Docker中运行纸壳CMS并配置使用MySql

    纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行。接下来看看如何在docker中运行纸壳CMS。

    Mr. Wei
  • POJ-1189 钉子和小球(动态规划)

    钉子和小球 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7452 ...

    ShenduCC
  • python接口自动化(三十八)-python操作mysql数据库(详解)

      现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会...

    北京-宏哥
  • MySQL基础学习之大战实操

    来继续学习MySQL啦,上次讲完基础知识后,下面就可以来实际上手操作,比如数据库的创建,增删改查(主要为库操作)等。

    小Bob来啦
  • 在SpringBoot中使用flyway管理数据库版本状态

    Flyway是一个开源的数据库版本管理工具,并且极力主张“约定大于配置”,简单、专注、强大。可以使用SQL完成数据同步,或者基于特定数据库的语法(例如PL / ...

    字母哥博客

扫码关注云+社区

领取腾讯云代金券