унифицированный интерфейс, поддерживающий подключение и доступ к различным типам баз данных;
клиентский API на C++, основанный на jdbc, простой и удобный в использовании;
поддержка пула соединений в клиенте C++;
поддержка клиентом C++ следующих режимов подключения к базе данных: статическое связывание с прямым подключением к базе данных, динамическая загрузка с прямым подключением, доступ через прокси-сервер dbproxy, гибридный режим доступа и т. д.;
при использовании режима доступа через прокси-сервер dbproxy поддерживается чёрный и белый списки, безопасное соединение SSL, управление максимальным количеством подключений, запись SQL-запросов (SQL-аудит безопасности, разделение чтения и записи и другие расширенные функции находятся в стадии разработки);
список поддерживаемых языков программирования: | Язык | Поддержка | |----|----| | C++ | Да | | Другие | Задача |
Список поддерживаемых баз данных: | База данных | Чтение, запись | Много наборов результатов | Пакетная запись | Хранимые процедуры | LOB чтение и запись | Связывание параметров | Транзакции | Ограничения | |----------|------|---------|---------|--------|---------|-------|------|--------| | MySQL | Да | Да | Да | Да | Да | Да | Да | Хранимые процедуры возвращают только результаты набора | | PostgreSQL | Да | Да | Да | Да | Да | Да | Да | Хранимые процедуры возвращают только результаты набора | | Oracle | Да | Да | Да | Да | Да | Да | Да | Хранимые процедуры возвращают только курсоры | | MSSQL | Да | Да | Да | Да | Да | Да | Да | Хранимые процедуры возвращают только наборы результатов, не поддерживает режим привязки параметров | | Sybase | Да | Да | Да | Да | Да | Да | Да | Хранимые процедуры возвращают только наборы результатов, не поддерживает режим привязки параметров | | Другое | Задача | Задача | Задача | Задача | Задача | Задача | Задача | |
#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; //по умолчанию используется режим прокси
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;
}
Дополнительные примеры: esql.cpp mssql.cpp mysql.cpp oracle.cpp postgres.cpp sybase.cpp
Распространённые режимы работы без использования CxxDBC:
Режим работы CxxDBC один: статическое связывание базы данных с прямым подключением
Режим работы CxxDBC два: динамическая загрузка базы данных с прямым подключением
Режим работы CxxDBC три: доступ через прокси dbproxy
Режим работы CxxDBC четыре: гибридный режим доступа
Объединяет режимы работы два и три. Схема не представлена.
Подробности см. в руководстве по использованию
Электронная почта: cxxjava@163.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )