VC++通过API连接MySQL

1、  首先安装MySQL数据库服务器,本文安装的是mysql-installer-community-5.6.10.1.msi这个版本,至于各个版本有什么不同,不在这里说明。

如下的默认安装的安装目录结构截图:

2、 接着配置环境变量,这个纯粹是要为了在命令行下使用mysql的相关命令更加方便。如

如下设置即可,有些安装包已经自动给添加上了这个路径,只需要检查一下即可。

3、 先在命令行下创建一个数据samp_db,并在创建表students。建库和建表都相对简单,如下截图是已经建好的。

创建数据库命令如下:

>createdatabase samp_db character set gbk;

使用数据库samp_db

>usesamp_db;

创建数据表

>createtable students

           id int unsigned not null auto_increment primary key,

           name char(8) not null,

           sex char(4) not null,

           age tinyint unsigned not null,

           tel char(13) null default "-",

           address char(60),

           modifyDateTime char(30)

);

4、  设置服务器允许网络访问,即将一个host设置为通配符%,即可允许网络上的主机访问这个服务器。

>use mysql;

>select ‘host‘ from user whereuser=‘root‘;

>update user set host = ‘%‘ where user =‘root‘;

>flush privileges;

5、 使用MySQL API访问数据库,即分为初始化,连接,设置,操作。

添加头文件

#include "mysql.h"

在程序依赖附加项中添加库。

libmysql.lib

具体实现代码如下:

void CTestMysqlUseAPIDlg::OnBnClickedOk()
{
    //TODO: 在此添加控件通知处理程序代码
    MYSQL*con;
    MYSQL_RES*res;
    MYSQL_ROWrow;

    //数据库配置
    chartmp[400];
    chardbuser[30] = "root";          //数据库用户名
    chardbpasswd[30] = "";            //密码
    chardbip[30] = "192.168.1.101";   //数据库服务器IP地址
    intnport = 3306;               //数据库服务器端口号
    chardbname[30] = "samp_db";       //数据库名
    chartablename[30] = "students";   //表名
    char*query = NULL;

    unsignedint t;
    intcount = 0;
    intrt;//return value

    //1、将初始化MYSQL对象
    con= mysql_init((MYSQL*)0);

    //2、连接数据库 相当在在window命令行下执行 mysql -h 192.168.1.101 -u root
    if(con != NULL&&
       mysql_real_connect(con,dbip,dbuser,dbpasswd,dbname,nport,NULL,0))
    {
       //3、选择数据库相当于执行mysql>use samp_db
       if(!mysql_select_db(con,dbname))
       {
           con->reconnect = 1;

           //3、用于设定字符集的,主要针对保存到数据库中的中文
           query= "set names \'GBK\'";
           rt=mysql_real_query(con,query,strlen(query));
           if(rt)
           {
              printf("Error making query: %s!!!\n",mysql_error(con));
           }

           //4、设定返回字符集,这是必须要设置的,不然返回的是其它的字符集,显示时全是乱码。
           query= "SET CHARACTER_SET_RESULTS=\'UTF8\'";
           rt=mysql_real_query(con,query,strlen(query));
           if(rt)
           {
              printf("Error making query: %s!!!\n",mysql_error(con));
           }
       }
    }
    else
    {
       MessageBoxA(NULL,"连接数据库失败,请检查配置!","",NULL);
       return;
    }

    //insert操作
    chartimeBuff[32] = {0};
    charbuff[256] = {0};
    SYSTEMTIMEst;
    GetLocalTime(&st);
    sprintf(timeBuff,"%04d-%02d-%02d%02d:%02d:%02d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
    sprintf(buff,"insert intostudentsvalues(NULL,\"%s\",\"%s\",%d,\"%s\",\"%s\",\"%s\");","牛小北","女",28,"135321432","长沙市",timeBuff);
    rt= mysql_real_query(con,buff,strlen(buff));
    if(rt)
    {
       CStringsError;
       sError.Format(L"%s",mysql_error(con));
       charbuff[128] = {0};
       WideCharToMultiByte(CP_ACP,0,sError,-1,buff,127,NULL,FALSE);
       MessageBox(L"inserterror.!" + sError,L"",NULL);
       return;
    }

    //select操作
    sprintf(tmp,"select *from %s where id>260;",tablename);
    rt= mysql_real_query(con,tmp,strlen(tmp));
    if(rt)
    {
       MessageBoxA(NULL,"selecterror.!","",NULL);
       return;
    }

    //对结果集做处理
    res= mysql_store_result(con);
    CStringstr;
    while(row = mysql_fetch_row(res))
    {

       for(t = 0;t< mysql_num_fields(res); t++)
       {
           wchar_tTmpBuf[128] = {0};
           MultiByteToWideChar(CP_UTF8,0,row[t],-1,TmpBuf,127);
           charbuff[127];
           WideCharToMultiByte(CP_ACP,0,TmpBuf,-1,buff,127,NULL,FALSE);
           str+= L""+CString(buff);
       }
       str+= L"\r\n";
    }
    //将结果集写到EDIT中
    GetDlgItem(IDC_EDIT1)->SetWindowText(str);

    //释放结果集
    mysql_free_result(res);
    //关闭连接
    mysql_close(con);

    return;
}

这是一个简单的结果界面。

MySQL API比较多,还需要学习更多。

这个文档的链接如下:

http://download.csdn.net/detail/cabmail/8852297

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 15:58:52

VC++通过API连接MySQL的相关文章

C API 连接MYSQL

1 #include <iostream> 2 #include <mysql.h> 3 #include <string> 4 5 #include <assert.h> 6 7 8 int main() 9 { 10 // MYSQL 初始化 11 MYSQL *ms_conn = mysql_init(NULL); 12 if (ms_conn == NULL) 13 { 14 std::cout << "Error: mysql

VC++ ADO 连接 mysql

通过自己摸索和网上帮助 了解了VC++ 用ADO 连接mysql数据库的方法:     使用的方法是利用ADO通过建立ODBC数据源来最终达到访问MySQL的目的.     1.安装mysql数据库服务器程序,也可安装appserv-win32-2.5.9.rar  里面包含了appche ,php,mysql ,安装后者可以通过网页管理数据库.因为方便所以我才用后者.             安装过程中记住密码.2.建立数据库:    可以通过命令行 也可以通过网页建立:http://loca

C/C++连接MySql数据库

本文档是关于如何使用MySql的API连接MySql数据库,开发环境为VS2013. 开发环境设置: 先确定以下两个位置 mysql.h所在位置:C:\software\wamp\bin\mysql\mysql5.5.20\include libmysql.lib所在位置:F:\mysql\mysqllib 需要把VS2013的工程中的头文件路径和连接库路径指向上面的两个地方: 将该项目属性页的C/C++->常规->附加包含目录指向:C:\software\wamp\bin\mysql\mys

c++连接mysql数据库(使用mysql api方式,环境VS2013+MYSQL5.6)

转载请注明出处,原文地址http://www.cnblogs.com/zenki-kong/p/4382657.html 刚开始写博客,博主还只是个大三汪,学艺不精,如有错误还请前辈指出(>^ω^<),废话不多说啦,进入正文 下一篇博客应该会讲使用mysql connector c++来让c++连接mysql,本篇是直接使用mysql api 首先交代一下开发环境,64位mysql5.6.23+VS2013+WIN7旗舰版 一开始用mysql5.7.6提示缺少binary_log_types.

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

VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machine type. 无效的机器类型,真的是很让人捉急. 发生这个错误的原因是,我在win8.1上安装的是64bit的mysql服务器,而我编译32位的VC程序,连接的是64位的libmysql.lib库,所以会产生 “无效的机器类型(invalid machine type)”的错误提示. 对于这个“e

C 连接mysql VC的步骤

初学C,看到C 连接mysql的教程不是很多,遇到很多的问题,看过许多盟友的解决方法,有点模糊(对我这个菜鸟来说),下面贴出具体步骤,一起学习: 1.C连接mysql的方法:C ,C ++ ,ODBC ,java ,Net .......,这里看C的连接,首先进入mysql驱动官网下载connector/c http://dev.mysql.com/downloads/connector/ 选择C版下载                               2.C  在vc 6环境下连接m

Vusual C++连接Mysql和从MySql中取出数据的API介绍

.1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag) 2.1.2 参数说明: • 第一个参数应该是一个现存MYSQL结

vc连接mysql数据库的方法

前段时间项目中用的是mysql数据库,它的连接方法有二种,一种是数据库自带的API,还有一种就用ADO连接了. 由于本次项目用的mysql数据库只是暂时的,后期可能会更改为MSSQL,所以如果用mysql自带的API连接移植性不好,所以改为ADO的,到时只要修改下字符串连接值就行了. 其实ADO连接的底层也是调用的ODBC驱动去连接,所以需要去下载个数据库对应的ODBC驱动,别人说秘本需要对应,要不然连接不上,我没有做太多测试,自己用的6.0版本,所以去官网下载了个mysql-connector

使用nodeJS创建API接口,连接mysql数据库(新手向简易版)

博主在学习安卓课程做期末程序的时候就一直想自己做API了,结果网上的教程感觉都太杂,很多都文不对题,找不到一个明确的思路,结果就只能放弃改用jdbc实现数据库交互,现在学了前端,又接触了一点nodeJS之后,才终于有了思路,最近也成功给自己放在服务器上的网站部署了API.现在就来分享一下,也顺便给自己留个备份. ps:只是自己突然想到的做法,而且个人觉得真的是简易版,可能不标准,但亲测能用. 一.前期准备 首先声明:不懂也没关系,直接仿照代码,需要修改的地方我会用红色标注出来,不过mysql一定