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....的,比较方便。

  • 相关阅读:
    Algorithm --> KMP算法
    Algorithm --> 快速排序
    Algorithm --> 阶乘和因子
    Algorithm --> Dijkstra和Floyd最短路径算法
    Algorithm --> 二分图最大匹配
    Algorithm --> 邮票连续组合问题
    Algorithm --> 字母重排
    Algorithm --> 6174问题
    Algorithm --> 字符串中最长不重合子串长度
    Algorithm --> DFS和BFS
  • 原文地址:https://www.cnblogs.com/ode/p/2143193.html
Copyright © 2011-2022 走看看