• linux环境下写C++操作mysql(一)


    /*****************
    connect.cpp
    g++ connect.cpp -o connect -I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient
    ****************/
    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include"mysql.h"
    
    
    class CMysqlInterface
    {
        public:
            CMysqlInterface();
            ~CMysqlInterface();
            
            void mysqlLibInit();
            void mysqlLibDestroy();
            int Connect();
            int Close();
    
        private:
            MYSQL *m_mysqlPtr;
    };
    
    int main()
    {
        printf("version 1.1
    ");
        int iRet = -1;
        CMysqlInterface MysqlObj;
        
        iRet = MysqlObj.Connect();
        if(0 == iRet)
        {
            printf("mysql_real_connect success
    ");
        }
        else
        {
            printf("mysql_real_connect failed
    ");
        }
        return 0;
    }
    
    CMysqlInterface::CMysqlInterface()
    {
        printf("CMysqlInterface
    ");
        m_mysqlPtr = NULL;
        m_mysqlPtr = mysql_init(NULL);
    }
    
    CMysqlInterface::~CMysqlInterface()
    {
        Close();
    
    }
    
    int CMysqlInterface::Close()
    {
        int iRet = 0;
        
        if(NULL != m_mysqlPtr)
        {
            mysql_close(m_mysqlPtr);
            m_mysqlPtr = NULL;
        }
        return iRet;
    }
    
    void CMysqlInterface::mysqlLibDestroy()
    {
        mysql_library_end();
    }
    
    int CMysqlInterface::Connect()
    {    
        printf("Connect
    ");
        int iRet = -1;
        m_mysqlPtr = mysql_real_connect(m_mysqlPtr,"localhost","root","csql","child",0,NULL,0);
        if(m_mysqlPtr)
        {
            iRet = 0;
        }
        return iRet;
    }

    exbot@ubuntu:~/wangqinghe/MySql/20190621/01$ g++ connect.cpp -o connect -I /usr/include/mysql/ -L /usr/lib/mysql/ -Imysqlclient

    /tmp/cceJyiND.o:在函数‘CMysqlInterface::CMysqlInterface()’中:

    connect.cpp:(.text+0xaf):对‘mysql_init’未定义的引用

    /tmp/cceJyiND.o:在函数‘CMysqlInterface::Close()’中:

    connect.cpp:(.text+0x100):对‘mysql_close’未定义的引用

    /tmp/cceJyiND.o:在函数‘CMysqlInterface::mysqlLibDestroy()’中:

    connect.cpp:(.text+0x121):对‘mysql_server_end’未定义的引用

    /tmp/cceJyiND.o:在函数‘CMysqlInterface::Connect()’中:

    connect.cpp:(.text+0x17c):对‘mysql_real_connect’未定义的引用

    collect2: error: ld returned 1 exit status 

    这个问题是因为连接命令出了错误 后面跟的应该是 -l 而不是-L

    输出结果:

    exbot@ubuntu:~/wangqinghe/MySql/20190621/02$ g++ connect.cpp -o connect -I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient

    exbot@ubuntu:~/wangqinghe/MySql/20190621/02$ ./connect

    version 1.1

    CMysqlInterface

    Connect

    mysql_real_connect success

  • 相关阅读:
    Node.js~在linux上的部署~pm2管理工具的使用
    在SSIS包中使用 Checkpoint从失败处重新启动包
    自己的第一个android应用(天气)
    ADF 项目创建流程
    HDU2159:FATE(二维完全背包)
    hdu 1542 Atlantis
    POJ 1037 DP
    移动互联与大数据之美-逐浪CMS2 X1.1发布
    SGU 201 Non Absorbing DFA (DP)
    基于SMTP协议的CMD命令邮件发送
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11066981.html
Copyright © 2020-2023  润新知