此专栏所有章节快速导航
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;
}
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|