| 
                        
                         此专栏所有章节快速导航 
01_MySQL数据库_CentOS7安装MySQL 
02_MySQL数据库_数据库基础知识 
03_MySQL数据库_库的操作 
04_MySQL数据库_表的操作 
05_MySQL数据库_数据类型 
06_MySQL数据库_表的约束 
07_MySQL数据库_增删查改 
08_MySQL数据库_复合查询 
09_MySQL数据库_索引 
10_MySQL数据库_事务管理 
11_MySQL数据库_用户管理 
12_MySQL数据库_CentOS7下C-C++链接MySQL 
文章目录 
一. 链接mysqlclient动态库时报错 1.1 报错提示信息 
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: 找不到 -lmysqlclient collect2: error: ld returned 1 exit status make: *** [test_mysql] 错误 1 
1.2 分析原因 
提示结果为找不到动态库mysql数据库,经过排查我发现mysql的动静态库安装时不在/usr/lib64下,而是在/usr/lib64/mysql目录下,如下图所示 
  
1.3 解决方法 
下面是我的Makefile文件 
test_mysql:test_mysql.cpp
	g++ -o $@ $^  -std=c++11 -L/usr/lib64/mysql -lmysqlclient  
.PHONY:clean
clean:
	rm -rf test_mysql
 
二. C/C++链接MySQL代码部分 
#include 
#include 
#include 
#include 
const char* const host = "127.0.0.1";  
const char* const user = "lihua";  
const char* const password = "Ji3#.10086";  
const char* const db = "db_for_lihua";  
const unsigned int port = 3306;  
int main()
{
    
    MYSQL* mysql1 = mysql_init(nullptr);
    
    
    
	
    
	if (mysql_real_connect(mysql1, host, user, password, db, port, nullptr, 0) == nullptr)
	{
        std::cerr << "connet failed!" << std::endl;
        return 1;
	}
    else 
    {
        std::cout << "connect success!" << std::endl;
        
        mysql_set_character_set(mysql1, "utf8");  
        
        
        
        
        
        
        std::string sql = "select * from student";
        
        
        int code = mysql_query(mysql1, sql.c_str());
        if (code != 0)
        {
            std::cerr << "execute:" << sql << " failed" << std::endl;
        }
        else 
        {
            std::cout << "execute:" << sql << "success" << std::endl;
            
            MYSQL_RES* result = mysql_store_result(mysql1);
            int row = mysql_num_rows(result);
            int col = mysql_num_fields(result);
            
            MYSQL_FIELD* field = mysql_fetch_fields(result);
            for (int i = 0; i < col; i++)
            {
                std::cout << field[i].name << "\t";
            }
            std::cout << std::endl;
            
            for (int i = 0; i < row; i++)
            {
                MYSQL_ROW line = mysql_fetch_row(result);  
                for (int j = 0; j < col; j++)
                {
                    std::cout << line[j] << "\t";
                }
                std::cout << std::endl;
            }
            
        }
    }
    
    mysql_close(mysql1);
    return 0;
}
 
                                                (编辑:鹰潭站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |