• mysql教程
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • mysql 5.7下载安装配置详细教程
  • Python的MySQLdb模块安装
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • Win7 64位下mysql 下载、安装与配置图文教程
  • mysql update语句的用法详解
  • mysql 存储过程实例和基本语法
  • MySQL Workbench的下载安装与使用教程
  • mysql安装图解
  • mysql 命令大全及导入导出表结构或数据
  • mysql数据库下载安装教程和使用技巧
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?
  • Linux下c基于openssl生成MD5的函数
  • vmware上装LINUX的问题,WIN7可以拼的通linux的IP,linux拼不通win7的IP
  •  
    当前位置:  数据库>mysql

    Linux和windows下用mysql c++ library操作Mysql数据库

     
        发布时间:2017-2-22  


        本文导语: Linux和windows下用mysql c++ library操作Mysql数据库Linux下用c++ 连接mysql数据库首先安装mysql,点完全安装,才能在在安装目录include找到相应的头文件,注意,是完全安装。我装的是5.1版本,需要的头文件如下:把需要的文件添加进去,...

    linuxwindows下用mysql c++ library操作mysql数据库


    Linux下用c++ 连接mysql数据库

    首先安装mysql,点完全安装,才能在在安装目录include找到相应的头文件,注意,是完全安装。

    我装的是5.1版本,需要的头文件如下:

    Linux和windows下用mysql c++ library操作Mysql数据库的头文件

    把需要的文件添加进去,然后再把 limysql.lib放到项目目录里,文件在mysql安装目录 lib 下面.

    #include "stdafx.h"
    #include <iostream>
    #include <winsock2.h>
    #include "mysql.h"
    //#pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib,"libmysql.lib")
    using namespace std;
    int main(int argc, char* argv[])
    {
     
        mysql_library_init(NULL,0,0);  
        MYSQL mysql;
        mysql_init(&mysql);
     
        if(0==mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8"))//设置字符集
        {
            cout << "设置字符集成功
    
    " <<endl;
        }
     
        if(!mysql_real_connect(&mysql,"localhost","root","kwgkwg","test",0,NULL,CLIENT_MULTI_STATEMENTS))//连接数据库
        {
            cout << "not connect mysql" << endl;
        }else
        {
            cout << "welcome to mysql
    
    
    ";
        }
     
        mysql_query(&mysql,"select * from demo1");          //执行SQL语句
        MYSQL_RES *result=mysql_store_result(&mysql);       //获取资源
        int rowcount=mysql_num_rows(result);                //获取记录数
        unsigned int fieldcount=mysql_num_fields(result);   //获取字段数
     
        //cout << rowcount << endl;
     
        MYSQL_FIELD *field=NULL;                            //字段
        MYSQL_ROW row=NULL;                         //记录
        while(row=mysql_fetch_row(result))
        {
            for(unsigned int i=0;i<fieldcount;i++)
            {
                field=mysql_fetch_field_direct(result,i);
                cout<<field->name<<":"<<row[i] <<"
    ";
            }
        }  
      
        mysql_free_result(result);
        mysql_close(&mysql);
        mysql_server_end();
        mysql_library_end();
         
        return 0;
    }


    windows下用mysql c++ library提供的函数库操作Mysql数据库 

    1、  准备工作

    MySQL数据库安装之后在/MySQL Server 5.0/lib/opt目录下有所需要的各种文件,我们需要的只是以下几个:

    libmysql.lib
    libmysql.dll

    同时需要/MySQL Server 5.0/include目录下的几个文件:

    mysql_version.h
    my_list.h
    mysql_com.h
    mysql_time.h
    mysql.h
    my_alloc.h
    typelib.h

    准备Socket的基本文件

    VC的安装目录Microsoft Visual Studio/VC98/Lib下找到:

    WS2_32.LIB 

    把这些文件先准备好。 

    2、  使用VC的AppWizard建立一个Win32 Console Application,其实可以是Dialog工程或是其他类型工程,比如工程取名CMySQL

    3、  把刚才准备好的文件拷贝你的工程目录下,和普通的CPP文件在同一个目录即可

    4、  建立之后,在VC的菜单栏点击Project(项目)->Settings(设置),弹出对话框,选择Link标签进入Link设置,在Object/library modules 的框里面加入libmysql.lib[有个空格]WS2_32.LIB。

    5、    在工程建立添加以下两个文件:

    第一个文件头文件:VspdCTOMySQL.h

    #include <stdio.h>
    #include <string>
    #include <afxsock.h>
    #include "mysql.h"
    using   namespace   std;
    class VspdCToMySQL 
    {
    public:
          
           //变量
           MYSQL mysql;
     
           /*
           构造函数和稀构函数
           */
           VspdCToMySQL();
           ~VspdCToMySQL();
     
           /*
           主要的功能:
           初始化数据库
           连接数据库
           设置字符集
     
           入口参数:
           host :MYSQL服务器IP
           port:数据库端口
           Db:数据库名称
           user:数据库用户
           passwd:数据库用户的密码
           charset:希望使用的字符集
           Msg:返回的消息,包括错误消息
     
           出口参数:
           int :0表示成功;1表示失败
           */
           int ConnMySQL(char *host,char * port,char * Db,char * user,char* passwd,char * charset,char * Msg);
     
           /*
           主要的功能:
           查询数据
     
           入口参数:
           SQL:查询的SQL语句
           Cnum:查询的列数
           Msg:返回的消息,包括错误消息 
           出口参数:
           string 准备放置返回的数据,多条记录则用0x06隔开,多个栏位用0x05隔开
           如果 返回的长度= 0,责表示舞结果
           */
           string SelectData(char * SQL,int Cnum ,char * Msg);
          
           /*
           主要功能:
           插入数据
          
           入口参数
           SQL:查询的SQL语句
           Msg:返回的消息,包括错误消息
     
           出口参数:
           int :0表示成功;1表示失败
           */
           int InsertData(char * SQL,char * Msg); 
           /*
           主要功能:
           修改数据      
           入口参数
           SQL:查询的SQL语句
           Msg:返回的消息,包括错误消息
     
           出口参数:
           int :0表示成功;1表示失败
           */
           int UpdateData(char * SQL,char * Msg);
     
           /*
           主要功能:
           删除数据      
           入口参数
           SQL:查询的SQL语句
           Msg:返回的消息,包括错误消息 
           出口参数:
           int :0表示成功;1表示失败
           */
           int DeleteData(char * SQL,char * Msg);
          
           /*
           主要功能:
           关闭数据库连接
           */
           void CloseMySQLConn();
     
    };

    第二个文件实现文件:VspdCTOMySQL.cpp 

    #include "stdafx.h"
    #include "VspdCTOMySQL.h"
     
    VspdCToMySQL::VspdCToMySQL()
    {
    }
     
    VspdCToMySQL::~VspdCToMySQL()
    {
    }
     
    //初始化数据
    int VspdCToMySQL::ConnMySQL(char *host,char * port ,char * Db,char * user,char* passwd,char * charset,char * Msg)
    {
           if( mysql_init(&mysql) == NULL )
           {
                  Msg = "inital mysql handle error";
                  return 1;
           }    
     
           if (mysql_real_connect(&mysql,host,user,passwd,Db,0,NULL,0) == NULL)
           {
                  Msg = "Failed to connect to database: Error";
                  return 1;
           }    
     
           if(mysql_set_character_set(&mysql,"GBK") != 0)
           {
                  Msg = "mysql_set_character_set Error";
                  return 1;
           }
           return 0;
    }
     
    //查询数据
    string VspdCToMySQL::SelectData(char * SQL,int Cnum,char * Msg)
    {
           MYSQL_ROW m_row;
        MYSQL_RES *m_res;
        char sql[2048];
        sprintf(sql,SQL);
           int rnum = 0;
           char rg = 0x06;//行隔开
           char cg = {0x05};//字段隔开
     
           if(mysql_query(&mysql,sql) != 0)
           {
                  Msg = "select ps_info Error";
                  return "";
           }
           m_res = mysql_store_result(&mysql);
     
           if(m_res==NULL)
           {
                  Msg = "select username Error";
                  return "";
           }
           string str("");
           while(m_row = mysql_fetch_row(m_res))
           {
                  for(int i = 0;i < Cnum;i++)
                  {
                         str += m_row[i];
                         str += rg;
                  }
                  str += rg;             
                  rnum++;
           }
     
           mysql_free_result(m_res);
     
           return str;
    }
     
    //插入数据
    int VspdCToMySQL::InsertData(char * SQL,char * Msg)
    {
           char sql[2048];
        sprintf(sql,SQL);
           if(mysql_query(&mysql,sql) != 0)
           {
                  Msg = "Insert Data Error";
                  return 1;
           }
           return 0;
    }
     
    //更新数据
    int VspdCToMySQL::UpdateData(char * SQL,char * Msg)
    {
           char sql[2048];
        sprintf(sql,SQL);
           if(mysql_query(&mysql,sql) != 0)
           {
                  Msg = "Update Data Error";
                  return 1;
           }
           return 0;
    }
     
    //删除数据
    int VspdCToMySQL::DeleteData(char * SQL,char * Msg)
    {
           char sql[2048];
        sprintf(sql,SQL);
           if(mysql_query(&mysql,sql) != 0)
           {
                  Msg = "Delete Data error";
                  return 1;
           }
           return 0;
    }
     
    //关闭数据库连接
    void VspdCToMySQL::CloseMySQLConn()
    {
           mysql_close(&mysql);
    }


    6、 在main函数,(如果是其他工程级不是main了,可能是一个按钮里面的代码块)添加      一些代码,添加之后如下:

    #include "stdafx.h"
    #include "VspdCTOMySQL.h"
     
    int main(int argc, char* argv[])
    {
        char* host="MYSQL服务器IP";
        char* user="root";
        char* port ="3306";
        char* passwd="用户密码";
        char* dbname="数据库名称"; 
        char* charset = "GBK";//支持中文
        char* Msg = "";//消息变量
        //初始化
        VspdCToMySQL * vspdctomysql = new VspdCToMySQL;
        if(vspdctomysql->ConnMySQL(host,port,dbname,user,passwd,charset,Msg) == 0)
               printf("连接成功/r/n");
        else
               printf(Msg);
       
        //查询
        char * SQL = "SELECT ids,username,passwd,address FROM vcaccesstest";
        string str = vspdctomysql->SelectData(SQL,4,Msg);
        if( str.length() > 0 )
        {
               printf("查询成功/r/n");
               printf(str.data());
               printf("/r/n");
        }
        else
        {
               printf(Msg);
        }
        //插入
        SQL = "insert into vcaccesstest(ids,username,passwd,address) values(4,'我的','123210','测试地址')";
        if(vspdctomysql->InsertData(SQL,Msg) == 0)
               printf("插入成功/r/n");
        //更新
        SQL = "update vcaccesstest set username = '修改了',passwd='2345' where ids = 3 ";
        if(vspdctomysql->UpdateData(SQL,Msg) == 0)
               printf("更新成功/r/n");
        //删除
        SQL = "delete from vcaccesstest where ids = 3 ";
        if(vspdctomysql->DeleteData(SQL,Msg) == 0)
               printf("删除成功/r/n");
     
        vspdctomysql->CloseMySQLConn();
     
        return 0;
    }

     7、 数据库表确认表存在,(程序中的表和字段是我的数据库里面的内容,你要自己搞定你的SQL语句了,你可以看main函数里面的SQL变量的内容。

    8、 编译,运行,一切ok。

    9、 总结,你要做的事情很少了,两个主要的文件写好了,你看例子调用即可,其他MySQL的库文件和附加文件别人也为您准备好了,移植到其他系统也是很简单的,比如移植到Linux和Unix下也是很简单的,VspdCTOMySQL.h和VspdCTOMySQL.cpp基本上是采用标准的C++编写的,在别的系统可能需要做少量修改即可。

    本文来源: 1111111.jpg


    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:Linux和windows下用mysql c++ library操作Mysql数据库
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2019,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号