zoukankan      html  css  js  c++  java
  • [原创]mysql++的编译及使用mysql++连接mysql数据库

    1、安装mysql

         下载安装mysql,原来安装过mysql,后来卸载了,再次安装时,在mysql配置工具的最后一步时,总是无法启动服务,错误提示为“could not start the service mysql error:0”,解决方法是删除安装目录的残留文件,停止mysql服务,将C:\ProgramData中mysql的数据文件转移或删除,重启,再次安装就可以了。

    2、mysql++准备知识
         这里有一些迷惑,在mySql官方网站提供了一个mysql connector/c++的API,还有一个使用很广泛的mysq++。Mysql++的官方网站中有mysql++的作者写的Mysql++和mysql connector/c++的比较,大致如下:
         Connector/C++ 是由mysql公司开发的新的mysql c API的封装库, 相比之下,mysql++的开发历史比较悠久……connector/c++是一个java风格的API,mysql++则使用原生的C++标准库,java程序员可能比较喜欢connector/c++,最后还是强调了一下mysql++是强大可靠的。

    3、下载安装mysql++

         下载并解压mysql++到C:/mysql++-3.1.0,下载地址:http://tangentsoft.net/mysql++/


    4、编译mysql++
         打开C:/mysql++-3.1.0下的Makefile.mingw文件(注意扩展名)。通过“查找,替换”方法,将所有“C:\Program Files\MySQL\MySQL Server 5.1” 替换为“c:\Program Files\MySQL\MySQL Server 5.5”,这里第40行和115行有一个换行,353行如果替换时选择了全字匹配,将有个5.1存在,总之替换完了用查找再看看哪里还有5.1字样,如果有,还需要修改为正确的路径。
         运行cmd,进入mysql的安装目录“c:\Program Files\MySQL\MySQL Server 5.5\lib\opt“;
         运行:dlltool -k -d C:\ mysql++-3.1.0\libmysqlclient.def -l libmysqlclient.a;执行成功后在 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\文件夹中将生成“libmysqlclient.a”文件;

         同样运行:dlltool -k -d C:\ mysql++-3.1.0\libmysqlclient.def -l libmysqlclient.lib;执行成功后在 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\文件夹中将生成“libmysqlclient.lib”文件。


         cmd到mysql++-3.1.0中执行:mingw32-make -f Makefile.mingw;执行后在目录中将生成很多.o和.od文件,这个不用管它,也可以删除,用命令mingw32-make -f Makefile.mingw clean可以自动清除编译过程中生成的中间文件。
         但我编译到这里,折腾了5遍约8个小时,总是会有错误。Google很久没有找到答案,有可能mysql++-3.1.0不支持mysql5.5,有哪位朋友知道是什么原因还望告知。

         一番折腾,还是没有成功。很奇怪,我有点怀疑是mysql版本的问题了。明天接着折腾。

    ------------------------------郁闷的分割线----------------------

         今天把mysql5.5.5卸载了,安装老版本mysql-essential-5.1.58-win32,一路next比较顺利。

         在上一次折腾mysql++的第4步,当生成了libmysqlclient.a时,增加以下步骤:

         1)将 libmysqlclient.a 拷贝至 c:\mysql++-3.1.0下;
         2)在c:\mysql++-3.1.0 下打开 mysql++.bkl,替换相关路径(这一步不知道有什么用,记录在这里备用一下);

         执行:mingw32-make -f Makefile.mingw,这里终于在mysql++的目录中生成我需要的mysqlpp.dll(3890 kb),点击install.hta文件,选择将库和include文件存放的路径,我选择了E盘。这样在E盘会有新的文件夹----mysql++,里面有两个文件夹“include”和“lib”,include文件夹里面都是头文件,lib文件夹中有libmysqlpp.a和mysqlpp.dll,可以写代码进行测试了。

         这期间,还需要根据不同的IDE进行相关的配置,我使用的是codeblocks10.05版,在全局环境变量中,增加了mysql和mysqlpp的环境变量:
         1)mysql:
              base:C:\Program Files\MySQL\MySQL Server 5.1
              include:C:\Program Files\MySQL\MySQL Server 5.1\include
              lib:C:\Program Files\MySQL\MySQL Server 5.1\lib

         2)mysqlpp:
              base:E:\MySQL++
              include:E:\MySQL++\include
              lib:E:\MySQL++\lib

    新建一个console,代码如下:

    #include <iostream>
    #include 
    <string>
    #include 
    <cstdlib>

    #include 
    <mysql++.h>

    using namespace std;

    int main()
    {
    mysqlpp::Connection con(
    false);

        con.set_option(
    new mysqlpp::SetCharsetNameOption("gbk"));

        cout 
    << "请输入数据库(root用户)连接密码:";
        
    string pwd;
        getline(cin, pwd);

        
    if (!con.connect("mytable""localhost""root", pwd.c_str()))
        {
            cout 
    << "无法连接,请检查密码是否正确!" << endl;
            
    return -1;
        }
        
    else
        {
            cout 
    << "shit.终于连上了。" << endl;
            mysqlpp::Query query 
    = con.query("select mycol from firsttable");
            
    if (mysqlpp::StoreQueryResult res = query.store()) {
                cout 
    << "We have:" << endl;
                mysqlpp::StoreQueryResult::const_iterator it;
                
    for (it = res.begin(); it != res.end(); ++it) {
                    mysqlpp::Row row 
    = *it;
                    cout 
    << '\t' << row["mycol"<< endl;
                    
    // 或者使用列索引
                    
    //cout << '\t' << row[0] << endl;
                }
            }
            
    else {
                cerr 
    << "Failed to get mycol list: " << query.error() << endl;
                
    return 1;
            }
        }

        
    return 0;
    }

          编译过程很顺利,不过运行时提示缺少libMYSQL.dll文件,这个文件在mysql的安装目录中(C:\Program Files\MySQL\MySQL Server 5.1\bin),拷贝一个到build文件夹,如debug或release,再运行,OK了。

          这里还有一个小技巧,在win7中,当前文件夹使用shift+反键,在快捷菜单中点击“在此处打开命令窗口”即可打开命令窗口,不用在cd....的,比较方便。

  • 相关阅读:
    5.4 省选模拟赛 修改 线段树优化dp 线段树上二分
    一本通 高手训练 1782 分层图 状压dp
    luogu P3830 [SHOI2012]随机树 期望 dp
    5.2 省选模拟赛 或许 线型基
    luogu P4562 [JXOI2018]游戏 组合数学
    一本通 高手训练 1781 死亡之树 状态压缩dp
    luogu P4726 【模板】多项式指数函数 多项式 exp 牛顿迭代 泰勒展开
    4.28 省选模拟赛 负环 倍增 矩阵乘法 dp
    HDU 1756 Cupid's Arrow 计算几何 判断一个点是否在多边形内
    一本通 高手训练 1763 简单树 可持久化线段树 树链刨分 标记永久化
  • 原文地址:https://www.cnblogs.com/ode/p/2143193.html
Copyright © 2011-2022 走看看