mysql-connector-c++查询mysql数据库表的通用方法

一、下载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


你可能感兴趣的:(mysql-connector-c++查询mysql数据库表的通用方法)