Samchon Framework for CPP
1.0.0
|
A SQL interface; DBMS connector. More...
#include <SQLi.hpp>
Public Member Functions | |
SQLi (const std::string &driver, int port) | |
Construct from driver name and port. More... | |
virtual auto | createStatement () -> std::shared_ptr< SQLStatement > |
Factory method for creating SQLStatement. More... | |
virtual void | connect (const std::string &ip, const std::string &db, const std::string &id, const std::string &pwd) |
Connect to the DBMS . More... | |
virtual void | disconnect () |
Disconnect from DBMS. More... | |
Protected Member Functions | |
virtual auto | getErrorMessage (short type) const -> std::string |
Get error message. More... | |
Protected Attributes | |
std::string | driver |
Driver; name of DBMS used for connection. More... | |
int | port |
Port number of DBMS. More... | |
bool | connected |
Had connected to DBMS. More... | |
A SQL interface; DBMS connector.
SQLi is an abstract class managing connection (session) with a specific database and manages SQL statements are executed and results are returned within the context of a connection.
The reason why SQLStatement(s) are managed by SQLi is because of a principle of DBMS, DBMS system doesn't allow simultaneous query from a session (connection). Only a query (process0) is allowed at a time. If you try to simultaneous query from a SQLi, ODBC throws error. To avoid the error, an execute of query from SQLStatement will lock a mutex of SQLi to ensure exclusiveness.
To ensure the exclusiveness, you've to make SQLStatement from SQLi. Do not make SQLStatement by yourself. call SQLi::createSQLStatement() instead. Even you make a derived class from SQLStatement, don't make its constructor to have public accessor.
Becuase execution of a sql statement causes lock on mutex in SQLi, you've to destruct the SQLStatement or call SQLStatement::free() method(). If you don't, the mutex will not be unlocked, thus you can't do anything by the SQLi.
|
inline |
Construct from driver name and port.
driver | Driver name of DBMS |
port | Port number of DBMS |
Definition at line 83 of file SQLi.hpp.
References disconnect(), driver, and port.
|
inlinevirtual |
Factory method for creating SQLStatement.
Recommend to create SQLStatement by this method. Direct creation is not recommended as the reason of domain problem of each DBMS
Definition at line 106 of file SQLi.hpp.
References connect().
|
inlinevirtual |
Connect to the DBMS
.
ip | An IP address of the DBMS |
db | A name of database to access |
id | Your own ID authorified from DBMS |
pwd | A password for the ID |
exception | Error message from DBMS |
Definition at line 122 of file SQLi.hpp.
References disconnect(), getErrorMessage(), and samchon::library::StringUtil::substitute().
Referenced by createStatement().
|
inlinevirtual |
|
inlineprotectedvirtual |
|
protected |
|
protected |
|
protected |