基于C++开发的异种数据库跨平台连接中间件.
#include "Edb.hh"
#include "ELog.hh"
#define LOG(fmt,...) ESystem::out->println(fmt, ##__VA_ARGS__)
#define HOST "127.0.0.1"
#define PORT "6633"
#define DATABASE "test"
#define USERNAME "test"
#define PASSWORD "password"
static void test_db_execute() {
EConnection conn; //默认使用proxy模式
conn.connect(DATABASE, HOST, atoi(PORT), USERNAME, PASSWORD);
ECommonStatement stmt(&conn);
EResultSet* rs;
//0.
try {
stmt.setSql("DROP TABLE mysql000").execute();
} catch (...) {
}
stmt.setSql("CREATE TABLE mysql000 ("
"id integer NULL,"
"name varchar (40) NULL ,"
"date date NULL"
") type=InnoDB").execute();
//1.
stmt.setSql("insert into mysql000 values(?,?,?)")
.bindInt(4)
.bindString("1")
.bindString("2017-07-08");
for (int i=0; i<100; i++) {
stmt.execute();
}
//2.
stmt.setSql("select * from mysql000").execute();
rs = stmt.getResultSet();
EResultSetMetaData* rsm = rs->getMetaData();
LOG(rsm->toString().c_str());
while (rs->next()) {
for (int i=1; i<=rs->getMetaData()->getColumnCount(); i++) {
LOG("%s:%s", rs->getMetaData()->getColumnLabel(i).c_str(), rs->isNull(i) ? "is null" : rs->getString(i).c_str());
}
}
rs->close();
conn.close();
}
int main(int argc, const char **argv) {
// CxxJDK init.
ESystem::init(argc, argv);
// CxxLog4j init.
ELoggerManager::init("log4e.properties");
try {
test_db_execute();
}
catch (ESQLException& e) {
e.printStackTrace();
}
catch (...) {
printf("catch all...\n");
}
ESystem::exit(0);
return 0;
}