mariadb-connector-cpp를 설치한다.
# tar -xvzf mariadb-connector-cpp-*.tar.gz
# cd mariadb-connector-cpp-*/
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install -d /usr/include/mariadb/conncpp
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install -d /usr/include/mariadb/conncpp/compat
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install include/mariadb/* /usr/include/mariadb/
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install include/mariadb/conncpp/* /usr/include/mariadb/conncpp
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install include/mariadb/conncpp/compat/* /usr/include/mariadb/conncpp/compat
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install -d /lib/x86_64-linux-gnu/mariadb
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install -d /lib/x86_64-linux-gnu/mariadb/plugin
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# install lib/mariadb/libmariadbcpp.so /usr/lib
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# cp lib64/mariadb/libmariadbcpp.so /lib/x86_64-linux-gnu
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# cp lib64/mariadb/libmariadb.so.3 /lib/x86_64-linux-gnu
mariadb-connector-cpp-1.0.1-ubuntu-focal-amd64# cp lib64/mariadb/plugin/* /lib/x86_64-linux-gnu/mariadb/plugin
컴파일 시 libmariadbcpp.so
를 링킹하여 컴파일한다.
{% raw %}#include <mariadb/conncpp.hpp>
#include <iostream> // std::cerr, std::cout, std::endl
int main(void)
{
try
{
sql::Driver *driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc:mariadb://127.0.0.1:3306/test"); // host:port/database
sql::Properties properties({{"user", "root"}, {"password", "root"}});
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));
std::unique_ptr<sql::Statement> stmt(conn->createStatement());
conn->setAutoCommit(true);
if(stmt.get() != NULL)
{
stmt->execute("DROP TABLE IF EXISTS mytable");
if (!stmt->execute("CREATE TABLE mytable (a varchar(255) primary key, b int(11)) ENGINE=InnoDB")) std::cout << "created table : mytable" << std::endl;
}
if(!stmt->isClosed()) stmt->close();
if(!conn->isClosed()) conn->close();
}
catch(sql::SQLException& e)
{
std::cerr << "except : " << e.what() << std::endl;
}
}{% endraw %}
{% raw %}#include <mariadb/conncpp.hpp>
#include <iostream> // std::cerr, std::endl
int main(void)
{
try
{
sql::Driver *driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc:mariadb://127.0.0.1:3306/test"); // host:port/database
sql::Properties properties({{"user", "root"}, {"password", "root"}});
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));
std::unique_ptr<sql::Statement> stmt(conn->createStatement());
conn->setAutoCommit(true);
if(stmt.get() != NULL)
{
stmt->execute("DROP TABLE IF EXISTS mytable");
if (!stmt->execute("CREATE TABLE mytable (a varchar(255) primary key, b int(11)) ENGINE=InnoDB"))
{
std::string a_value("test");
unsigned int b_value = 44;
std::unique_ptr<sql::PreparedStatement> stmt_insert(conn->prepareStatement("INSERT INTO mytable (a, b) VALUES (?, ?)"));
stmt_insert->setString(1, a_value);
stmt_insert->setUInt(2, b_value);
stmt_insert->executeQuery();
if(!stmt_insert->isClosed()) stmt_insert->close();
}
}
stmt->execute("DROP TABLE mytable");
if(!stmt->isClosed()) stmt->close();
if(!conn->isClosed()) conn->close();
}
catch(sql::SQLException& e)
{
std::cerr << "except : " << e.what() << std::endl;
}
}{% endraw %}
{% raw %}#include <mariadb/conncpp.hpp>
#include <iostream> // std::cerr, std::endl
int main(void)
{
try
{
sql::Driver *driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc:mariadb://127.0.0.1:3306/test"); // host:port/database
sql::Properties properties({{"user", "root"}, {"password", "root"}});
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));
std::unique_ptr<sql::Statement> stmt(conn->createStatement());
conn->setAutoCommit(true);
if(stmt.get() != NULL)
{
stmt->execute("DROP TABLE IF EXISTS mytable");
if (!stmt->execute("CREATE TABLE mytable (a varchar(255) primary key, b int(11)) ENGINE=InnoDB"))
{
std::string a_value("test");
unsigned int b_value = 44;
std::unique_ptr<sql::PreparedStatement> stmt_insert(conn->prepareStatement("INSERT INTO mytable (a, b) VALUES (?, ?)"));
stmt_insert->setString(1, a_value);
stmt_insert->setUInt(2, b_value);
stmt_insert->executeQuery();
if(!stmt_insert->isClosed()) stmt_insert->close();
}
}
if(!stmt->isClosed()) stmt->close();
if(!conn->isClosed()) conn->close();
}
catch(sql::SQLException& e)
{
std::cerr << "except : " << e.what() << std::endl;
}
}{% endraw %}
{% raw %}#include <mariadb/conncpp.hpp>
#include <iostream> // std::cerr, std::cout, std::endl
int main(void)
{
try
{
sql::Driver *driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc:mariadb://127.0.0.1:3306/test"); // host:port/database
sql::Properties properties({{"user", "root"}, {"password", "root"}});
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));
std::unique_ptr<sql::Statement> stmt(conn->createStatement());
conn->setAutoCommit(true);
if(stmt.get() != NULL)
{
stmt->execute("DROP TABLE IF EXISTS mytable");
if (!stmt->execute("CREATE TABLE mytable (a varchar(255) primary key, b int(11)) ENGINE=InnoDB"))
{
std::unique_ptr<sql::ResultSet> rset1(stmt->executeQuery("SELECT * FROM mytable"));
if(!rset1 || rset1->next() == false) std::cerr << "not data" << std::endl;
if(!rset1->isClosed()) rset1->close();
std::string a_value("test");
unsigned int b_value = 44;
std::unique_ptr<sql::PreparedStatement> stmt_insert(conn->prepareStatement("INSERT INTO mytable (a, b) VALUES (?, ?)"));
stmt_insert->setString(1, a_value);
stmt_insert->setUInt(2, b_value);
stmt_insert->executeQuery();
if(!stmt_insert->isClosed()) stmt_insert->close();
std::unique_ptr<sql::ResultSet> rset2(stmt->executeQuery("SELECT * FROM mytable"));
if(rset2 && rset2->next()) std::cout << rset2->getString(1) << " " << rset2->getUInt(2) << std::endl;
if(!rset2->isClosed()) rset2->close();
}
}
if(!stmt->isClosed()) stmt->close();
if(!conn->isClosed()) conn->close();
}
catch(sql::SQLException& e)
{
std::cerr << "except : " << e.what() << std::endl;
}
}{% endraw %}
{% raw %}#include <mariadb/conncpp.hpp>
#include <iostream> // std::cerr, std::endl
int main(void)
{
try
{
sql::Driver *driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc:mariadb://127.0.0.1:3306/test"); // host:port/database
sql::Properties properties({{"user", "root"}, {"password", "root"}});
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));
std::unique_ptr<sql::Statement> stmt(conn->createStatement());
conn->setAutoCommit(true);
if(stmt.get() != NULL)
{
stmt->execute("DROP TABLE IF EXISTS mytable");
if (!stmt->execute("CREATE TABLE mytable (a varchar(255) primary key, b int(11)) ENGINE=InnoDB"))
{
std::string a_value("test");
unsigned int b_value = 44;
std::unique_ptr<sql::PreparedStatement> stmt_insert(conn->prepareStatement("INSERT INTO mytable (a, b) VALUES (?, ?)"));
stmt_insert->setString(1, a_value);
stmt_insert->setUInt(2, b_value);
stmt_insert->executeQuery();
if(!stmt_insert->isClosed()) stmt_insert->close();
std::unique_ptr<sql::PreparedStatement> stmt_update(conn->prepareStatement("UPDATE mytable SET b = ? WHERE a = ?"));
stmt_update->setUInt(1, 2);
stmt_update->setString(2, a_value);
stmt_update->executeQuery();
if(!stmt_update->isClosed()) stmt_update->close();
}
}
if(!stmt->isClosed()) stmt->close();
if(!conn->isClosed()) conn->close();
}
catch(sql::SQLException& e)
{
std::cerr << "except : " << e.what() << std::endl;
}
}{% endraw %}
{% raw %}#include <mariadb/conncpp.hpp>
#include <iostream> // std::cerr, std::endl
int main(void)
{
try
{
sql::Driver *driver = sql::mariadb::get_driver_instance();
sql::SQLString url("jdbc:mariadb://127.0.0.1:3306/test"); // host:port/database
sql::Properties properties({{"user", "root"}, {"password", "root"}});
std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));
std::unique_ptr<sql::Statement> stmt(conn->createStatement());
conn->setAutoCommit(true);
if(stmt.get() != NULL)
{
stmt->execute("DROP TABLE IF EXISTS mytable");
if (!stmt->execute("CREATE TABLE mytable (a varchar(255) primary key, b int(11)) ENGINE=InnoDB"))
{
std::string a_value("test");
unsigned int b_value = 44;
std::unique_ptr<sql::PreparedStatement> stmt_insert(conn->prepareStatement("INSERT INTO mytable (a, b) VALUES (?, ?)"));
stmt_insert->setString(1, a_value);
stmt_insert->setUInt(2, b_value);
stmt_insert->executeQuery();
if(!stmt_insert->isClosed()) stmt_insert->close();
stmt->execute("DELETE FROM mytable WHERE a='test'");
}
}
if(!stmt->isClosed()) stmt->close();
if(!conn->isClosed()) conn->close();
}
catch(sql::SQLException& e)
{
std::cerr << "except : " << e.what() << std::endl;
}
}{% endraw %}