Skip to content

Instantly share code, notes, and snippets.

@tomov3
Created October 14, 2016 07:49
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomov3/4509b0098673a474b2722ddb3dd337ff to your computer and use it in GitHub Desktop.
Save tomov3/4509b0098673a474b2722ddb3dd337ff to your computer and use it in GitHub Desktop.
Connecting to MySQL using Connector/C++
#include <iostream>
#include <sstream>
#include <memory>
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <mysql_error.h>
#include <cppconn/Statement.h>
#include <cppconn/ResultSet.h>
//define your own configurations in mysql_config.hpp
//for example: HOST = "tcp://127.0.0.1:3306", USER = "root", PASSWORD = "password"
// DATABASE = "database_name"
#include "mysql_config.hpp"
using namespace std;
int main()
{
try {
sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
unique_ptr<sql::Connection> con(driver->connect(HOST, USER, PASSWORD));
unique_ptr<sql::Statement> stmt(con->createStatement());
stmt->execute("USE " + DATABASE);
stmt->execute("DROP TABLE IF EXISTS conference");
stmt->execute("CREATE TABLE conference(cid int, name varchar(10))");
cout << "\"conference\" table has been created." << endl;
stmt->execute("INSERT INTO conference VALUES(1, 'SIGMOD')");
stmt->execute("INSERT INTO conference VALUES(2, 'VLDB')");
stmt->execute("INSERT INTO conference VALUES(3, 'ICDE')");
stmt->execute("INSERT INTO conference VALUES(4, 'KDD')");
unique_ptr<sql::ResultSet> res(stmt->executeQuery("SELECT * FROM conference"));
size_t row = 0;
while (res->next()) {
cout << row << "\t";
/* You can use either numeric offsets... */
cout << "cid = " << res->getInt(1);
/* ... or column names for accessing results. The latter is recommended. */
cout << ", name = '" << res->getString("name") << "' " << endl;
row++;
}
} catch (sql::SQLException &e) {
cout << "# ERR: SQLException in " << __FILE__ << " on line " << __LINE__ << endl;
cout << "# ERR: " << e.what() << endl;
cout << " (MySQL error code: " << e.getErrorCode();
cout << ", SQLState: " << e.getSQLState() << " )" << endl;
return EXIT_FAILURE;
} catch (runtime_error &e) {
cout << "# ERR: runtime_error in " << __FILE__ << " on line " << __LINE__ << endl;
cout << "# ERR: " << e.what() << endl;
return EXIT_FAILURE;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment