一、下载mysql-connector-c++版本要选对
wget http://cdn.mysql.com//Downloads/Connector-C++/mysql-connector-c++-1.1.7-linux-glibc2.5-x86-64bit.tar.gz
二、解压后目录结构如下
:/mybk/mysql-connector-c++-1.1.7-linux-glibc2.5-x86-64bit$ tree . ├── ANNOUNCEMENT ├── COPYING ├── include │ ├── cppconn │ │ ├── build_config.h │ │ ├── config.h │ │ ├── connection.h │ │ ├── datatype.h │ │ ├── driver.h │ │ ├── exception.h │ │ ├── metadata.h │ │ ├── parameter_metadata.h │ │ ├── prepared_statement.h │ │ ├── resultset.h │ │ ├── resultset_metadata.h │ │ ├── sqlstring.h │ │ ├── statement.h │ │ ├── variant.h │ │ ├── version_info.h │ │ └── warning.h │ ├── mysql_connection.h │ ├── mysql_driver.h │ └── mysql_error.h ├── INSTALL ├── lib │ ├── libmysqlcppconn.so -> libmysqlcppconn.so.7 │ ├── libmysqlcppconn.so.7 -> libmysqlcppconn.so.7.1.1.7 │ ├── libmysqlcppconn.so.7.1.1.7 │ └── libmysqlcppconn-static.a ├── Licenses_for_Third-Party_Components.txt └── README
把include和lib(连同文件及下面的所有子目录)拷入mysql server的安装目录(这里是/opt/mysql)下对应的include和lib
拷好后/opt/mysql/include和/opt/mysql/lib如下:
$ tree /opt/mysql/include/ /opt/mysql/include/ ├── big_endian.h ├── binary_log_types.h ├── byte_order_generic.h ├── byte_order_generic_x86.h ├── cppconn │ ├── build_config.h │ ├── config.h │ ├── connection.h │ ├── datatype.h │ ├── driver.h │ ├── exception.h │ ├── metadata.h │ ├── parameter_metadata.h │ ├── prepared_statement.h │ ├── resultset.h │ ├── resultset_metadata.h │ ├── sqlstring.h │ ├── statement.h │ ├── variant.h │ ├── version_info.h │ └── warning.h ├── decimal.h ├── errmsg.h ├── keycache.h ├── little_endian.h ├── m_ctype.h ├── m_string.h ├── my_alloc.h ├── my_byteorder.h ├── my_command.h ├── my_compiler.h ├── my_config.h ├── my_dbug.h ├── my_dir.h ├── my_getopt.h ├── my_global.h ├── my_list.h ├── mysql │ ├── client_authentication.h │ ├── client_plugin.h │ ├── client_plugin.h.pp │ ├── com_data.h │ ├── get_password.h │ ├── group_replication_priv.h │ ├── innodb_priv.h │ ├── mysql_lex_string.h │ ├── plugin_audit.h │ ├── plugin_audit.h.pp │ ├── plugin_auth_common.h │ ├── plugin_auth.h │ ├── plugin_auth.h.pp │ ├── plugin_ftparser.h │ ├── plugin_ftparser.h.pp │ ├── plugin_group_replication.h │ ├── plugin.h │ ├── plugin_trace.h │ ├── plugin_validate_password.h │ ├── psi │ │ ├── mysql_file.h │ │ ├── mysql_idle.h │ │ ├── mysql_mdl.h │ │ ├── mysql_memory.h │ │ ├── mysql_ps.h │ │ ├── mysql_socket.h │ │ ├── mysql_sp.h │ │ ├── mysql_stage.h │ │ ├── mysql_statement.h │ │ ├── mysql_table.h │ │ ├── mysql_thread.h │ │ ├── mysql_transaction.h │ │ ├── psi_base.h │ │ ├── psi.h │ │ └── psi_memory.h │ ├── service_command.h │ ├── service_locking.h │ ├── service_my_plugin_log.h │ ├── service_my_snprintf.h │ ├── service_mysql_alloc.h │ ├── service_mysql_password_policy.h │ ├── service_mysql_string.h │ ├── service_parser.h │ ├── service_rpl_transaction_ctx.h │ ├── service_rpl_transaction_write_set.h │ ├── service_rules_table.h │ ├── service_security_context.h │ ├── services.h │ ├── services.h.pp │ ├── service_srv_session.h │ ├── service_srv_session_info.h │ ├── service_thd_alloc.h │ ├── service_thd_engine_lock.h │ ├── service_thd_wait.h │ ├── service_thread_scheduler.h │ ├── thread_pool_priv.h │ └── thread_type.h ├── mysql_com.h ├── mysql_com_server.h ├── mysql_connection.h ├── mysqld_ername.h ├── mysqld_error.h ├── mysql_driver.h ├── mysql_embed.h ├── mysql_error.h ├── mysql.h ├── mysql_time.h ├── mysql_version.h ├── my_sys.h ├── my_thread.h ├── my_thread_local.h ├── my_xml.h ├── plugin_audit.h ├── plugin_ftparser.h ├── plugin_group_replication.h ├── plugin.h ├── plugin_validate_password.h ├── sql_common.h ├── sql_state.h ├── sslopt-case.h ├── sslopt-longopts.h ├── sslopt-vars.h ├── thr_cond.h ├── thr_mutex.h ├── thr_rwlock.h └── typelib.h $ tree /opt/mysql/lib /opt/mysql/lib ├── libmysqlclient.a ├── libmysqlclient_r.so -> libmysqlclient.so.20.0.9 ├── libmysqlclient.so -> libmysqlclient.so.20 ├── libmysqlclient.so.20 -> libmysqlclient.so.20.0.9 ├── libmysqlclient.so.20.0.9 ├── libmysqlcppconn.so -> libmysqlcppconn.so.7 ├── libmysqlcppconn.so.7 -> libmysqlcppconn.so.7.1.1.7 ├── libmysqlcppconn.so.7.1.1.7 ├── libmysqlcppconn-static.a ├── libmysqld.a ├── libmysqld-debug.a ├── libmysqlservices.a ├── libtcmalloc_minimal.so ├── libtcmalloc_minimal.so.0 -> libtcmalloc_minimal.so . . .
三、代码
test2.cpp
/* * g++ test2.cpp -o test2 -I/opt/mysql/include -L/opt/mysql/lib -lmysqlcppconn -Wl,-rpath=/opt/mysql/lib * * */ #include <iostream> #include <stdlib.h> using namespace std; #include <mysql_connection.h> #include <mysql_driver.h> #include <mysql_error.h> #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <cppconn/prepared_statement.h> using namespace sql; #define URL "tcp://127.0.0.1:3306" #define USER "your-usr" #define PASSWORD "your-pass" int main() { try { Driver *driver = get_driver_instance(); Connection *conn = driver->connect(URL, USER, PASSWORD); Statement * stmt = conn->createStatement(); stmt->execute("SET NAMES utf8"); stmt->execute("USE you-database"); ResultSet * resultSet = stmt->executeQuery("select * from you-table"); //改为你的库和表 int col_count=resultSet->getMetaData()->getColumnCount(); while (resultSet->next()) { for(int col=1;col<=col_count;col++) cout << "'" << resultSet->getString(col) << "' "; cout<<endl; } conn->close(); delete stmt; delete conn; } catch (SQLException &e) { cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; return EXIT_FAILURE; } catch (std::runtime_error &e) { cout << "# ERR: " << e.what() << endl; return EXIT_FAILURE; } return EXIT_SUCCESS; }
四、编译
代码最开始的注释部分,当然如果系统的动态库搜索路径中包含了/opt/mysql/lib则下面内容可以省去
-Wl,-rpath=/opt/mysql/lib