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", "", NULL, , 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 = ; 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[], row[], row[]);
AfxMessageBox(str);
}

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

mysql_close();

mysql_free_result();

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

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

4.创建数据库

mysql_create_db():

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

VC连接MySql的更多相关文章

  1. VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

    VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machin ...

  2. vs2012中VC连接mysql

    在MySQL的安装目录下你会找到include和lib文件夹(完全安装模式下),里面分别是C接口的头文件和库文件,库文件只用libmysql.lib就好了,即把libmysql.lib拷贝到了VC++ ...

  3. 【转】VC++与MySQL数据库的连接

    原文地址:http://blog.csdn.net/nupt123456789/article/details/8043091 1.MySQL数据库的安装 你可以从MySQL的官网上或者从如下地址下载 ...

  4. C 连接mysql VC的步骤

    初学C,看到C 连接mysql的教程不是很多,遇到很多的问题,看过许多盟友的解决方法,有点模糊(对我这个菜鸟来说),下面贴出具体步骤,一起学习: 1.C连接mysql的方法:C ,C ++ ,ODBC ...

  5. VC++ ADO 连接 mysql

    通过自己摸索和网上帮助 了解了VC++ 用ADO 连接mysql数据库的方法:     使用的方法是利用ADO通过建立ODBC数据源来最终达到访问MySQL的目的.     1.安装mysql数据库服 ...

  6. visualC/C++连接MySql数据库

    vs连接数据库其实就是将mysql数据库.h头文件接口.lib链接文件和dll执行文件加入到项目中.下面是配置如何加入. 转于http://www.cnblogs.com/justinzhang/ar ...

  7. vs连接mysql出错解决方法

    vs连接mysql出错解决方法 先按以下的步骤配置一下: **- (1)打开VC6.0 工具栏Tools菜单下的Options选项.在Directories的标签页中右边的"Show dir ...

  8. 在VS中如何用C++连接Mysql

    在如鹏网上看到的如何用C连接Mysql,解决了大二时的一直困惑,大喜! 第一步下载 安装的数据库是如鹏网的Mysql :http://pan.baidu.com/s/1c0m3xIw 提取码:m9sn ...

  9. c/c++使用VS2013连接MySQL与ubuntu下c链接mysql

    vs连接数据库事实上就是将mysql数据库.h头文件接口.lib链接文件和dll运行文件增加到项目中.以下是配置怎样增加. 转于http://www.cnblogs.com/justinzhang/a ...

随机推荐

  1. C++解题报告 : 迭代加深搜索之 ZOJ 1937 Addition Chains

    此题不难,主要思路便是IDDFS(迭代加深搜索),关键在于优化. 一个IDDFS的简单介绍,没有了解的同学可以看看: https://www.cnblogs.com/MisakaMKT/article ...

  2. vue中created、mounted、 computed,watch,method 等方法整理

    created:html加载完成之前,执行.执行顺序:父组件-子组件 mounted:html加载完成后执行.执行顺序:子组件-父组件 methods:事件方法执行 watch:watch是去监听一个 ...

  3. 制作DNS字典

    1.收集字典 一般kali自带的DNS爆破工具都会有自己的字典,使用  dpkg -L dns爆破软件名 查询字典的路径.txt文件一般是字典. 合并到一个txt文件中. 2.删除字典中重复的字符串 ...

  4. Shiro学习

    Shiro学习资源 Shiro官网,http://shiro.apache.org/index.html 学习网站链接,http://blog.java1234.com/blog/articles/4 ...

  5. 配置Tomcat时遇到的问题

    今天准备开始JavaWeb的学习,先配置tomcat,前期一切顺利,可当我打开startup.bat,访问localhost:8080时,却显示localhost 拒绝了我们的连接请求. 于是我开始在 ...

  6. centos7 Mycat/MySQL/MariaDB安装部署

    使用yum安装MySQL详细步骤 安装mysql源 centos系统中不包含mysql的源,需要先安装mysql源 1.官网下载源.使用图形界面操作系统进入mysql官网,进入以下界面. 2.在Cen ...

  7. 在idea中,mavne项目使用mybatis-generator-maven-plugin自动生成实体了的时候,在maven插件里面始终不显示

    最近想学习mybatis的知识,自己搭了个简单的ssm框架,想通过插件自动生成实体类,发现想要的插件一直都没显示出来,着实很郁闷: pom.xm中的配置: <!--mybatis-generat ...

  8. appium + java + WebDriverAgent实现IOS app启动

    Appium v1.8.1 <dependency>    <groupId>io.appium</groupId>    <artifactId>ja ...

  9. [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)

    "哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...

  10. PowerShell工作流学习-5-自定义活动

    关键点: a)除了内置活动和自定义活动,还可以用C# 编写自定义活动,并将其包括在 XAML 工作流和脚本工作流中,若要将自定义活动添加到脚本工作流中,请使用 #Requires 语句的 Assemb ...