Skip to content

Instantly share code, notes, and snippets.

@SolemnJoker
Last active November 7, 2020 06:43
Show Gist options
  • Select an option

  • Save SolemnJoker/5c774878a420292441ce5c9a1c2ff8b3 to your computer and use it in GitHub Desktop.

Select an option

Save SolemnJoker/5c774878a420292441ce5c9a1c2ff8b3 to your computer and use it in GitHub Desktop.
[c++ 使用mysql]#mysql #c++

如何添加到工程


一、下载mysql connect c 6.0

最新版本整合进大安装包了,6.0以下有单独的client dev mysql connect c 6.0 或者直接apt 安装

sudo apt install libmysqlclient-dev

二、如果是下载的

  • 1.解压压缩包
  • 2.包含头文件
  • 3.链接库 libmysqlclient.so cmake
set(MYSQL mysql-connector-c-6.1.11-linux-glibc2.12-x86_64)
include_directories(thirdparty/include/${MYSQL})
link_directories(thirdparty/lib/${MYSQL})

add_executable(${PROJECT} ${DIR_SRCS}
)

target_link_libraries(${PROJECT} pthread hcnetsdk HCAlarm ssl z log4cplus  mysqlclient)
//connect
MYSQL *Connect() {
MYSQL* mysql = mysql_init(nullptr);
if (mysql == nullptr) {
LOG_ERROR("mysql init error:%s", mysql_error(mysql));
return nullptr;
}
auto conn =
mysql_real_connect(mysql, host.c_str(), user.c_str(), passwd.c_str(),
db.c_str(), port, nullptr, 0);
if (conn == nullptr) {
LOG_ERROR("mysql connect error:%s", mysql_error(mysql));
return nullptr;
}
return conn;
}
//不用之后需要close
auto conn = Connect();
if (conn == nullptr){
return false;
}
DEFER{mysql_close(conn);};
auto conn = Connect();
if (conn == nullptr){
return false;
}
DEFER{mysql_close(conn);};
char query[1024];
sprintf(query,"INSERT INTO table_name (value1,value2,...) VALUES (%s,%s,%s,...)",value1,value2,value3);
auto ret = mysql_query(conn, query);
if (ret != 0) {
LOG_ERROR("mysql insert error,sql:%s \n error:%s", query, mysql_error(conn));
return false;
}
return true;
auto conn = impl->Connect();
if (conn == nullptr) {
return false;
}
DEFER { mysql_close(conn); };
char query[1024];
sprintf(query, "SELECT * FROM table_name", limit);
auto ret = mysql_query(conn, query);
if (ret != 0) {
LOG_ERROR("mysql select error ,sql :%s \n error:%s", query, mysql_error(conn));
return false;
}
MYSQL_RES *result = mysql_store_result(conn);
if (result == nullptr){
LOG_ERROR("mysql store result error :%s",mysql_error(conn));
return false;
}
DEFER{mysql_free_result(result);};
auto num_rows = mysql_num_rows(result);
LOG_INFO("got %d row verify info ",(int)num_rows);
unsigned int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while (row = mysql_fetch_row(result))
{
unsigned long *lengths = mysql_fetch_lengths(result);
for (int i = 0; i < num_fields; i++)
{
char *filed = row[i];
unsigned int field_length = lengths[i];
LOG_INFO("column[%d],length[%d],data[%s]\n", i, field_length, filed ? filed : "null");
}
}
return false;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment