diff options
-rw-r--r-- | odb/oracle/database.cxx | 30 | ||||
-rw-r--r-- | odb/oracle/database.hxx | 22 |
2 files changed, 43 insertions, 9 deletions
diff --git a/odb/oracle/database.cxx b/odb/oracle/database.cxx index 239fa0d..8c20faa 100644 --- a/odb/oracle/database.cxx +++ b/odb/oracle/database.cxx @@ -23,22 +23,26 @@ namespace odb database (const string& user, const string& password, const string& db, + ub2 charset, + ub2 ncharset, OCIEnv* environment, auto_ptr<connection_factory> factory) : user_ (user), password_ (password), db_ (db), port_ (0), + charset_ (charset), + ncharset_ (ncharset_), environment_ (environment), factory_ (factory) { if (environment_ == 0) { - // @@ Be aware of encoding caveats. - // sword s (OCIEnvNlsCreate (&environment_, OCI_THREADED, - 0, 0, 0, 0, 0, 0, 0, 0)); + 0, 0, 0, 0, 0, 0, + charset, + ncharset)); if (s == OCI_ERROR) translate_error (environment_); @@ -53,6 +57,8 @@ namespace odb const string& service, const string& host, unsigned int port, + ub2 charset, + ub2 ncharset, OCIEnv* environment, auto_ptr<connection_factory> factory) : user_ (user), @@ -60,16 +66,18 @@ namespace odb service_ (service), host_ (host), port_ (port), + charset_ (charset), + ncharset_ (ncharset), environment_ (environment), factory_ (factory) { if (environment_ == 0) { - // @@ Be aware of encoding caveats. - // sword s (OCIEnvNlsCreate (&environment_, OCI_THREADED, - 0, 0, 0, 0, 0, 0, 0, 0)); + 0, 0, 0, 0, 0, 0, + charset, + ncharset)); if (s == OCI_ERROR) translate_error (environment_); @@ -109,19 +117,23 @@ namespace odb database (int& argc, char* argv[], bool erase, + ub2 charset, + ub2 ncharset, OCIEnv* environment, auto_ptr<connection_factory> factory) : port_ (0), + charset_ (charset), + ncharset_ (ncharset), environment_ (environment), factory_ (factory) { if (environment_ == 0) { - // @@ Be aware of encoding caveats. - // sword s (OCIEnvNlsCreate (&environment_, OCI_THREADED, - 0, 0, 0, 0, 0, 0, 0, 0)); + 0, 0, 0, 0, 0, 0, + charset, + ncharset)); if (s == OCI_ERROR) translate_error (environment_); diff --git a/odb/oracle/database.hxx b/odb/oracle/database.hxx index a9be13d..80b6fba 100644 --- a/odb/oracle/database.hxx +++ b/odb/oracle/database.hxx @@ -21,6 +21,7 @@ #include <odb/oracle/connection.hxx> #include <odb/oracle/connection-factory.hxx> #include <odb/oracle/auto-handle.hxx> +#include <odb/oracle/oracle-fwd.hxx> #include <odb/oracle/details/export.hxx> @@ -36,6 +37,8 @@ namespace odb database (const std::string& user, const std::string& password, const std::string& db, + ub2 charset = 0, + ub2 ncharset = 0, OCIEnv* environment = 0, std::auto_ptr<connection_factory> factory = std::auto_ptr<connection_factory> (0)); @@ -45,6 +48,8 @@ namespace odb const std::string& service, const std::string& host = "", unsigned int port = 0, + ub2 charset = 0, + ub2 ncharset = 0, OCIEnv* environment = 0, std::auto_ptr<connection_factory> factory = std::auto_ptr<connection_factory> (0)); @@ -68,6 +73,8 @@ namespace odb database (int& argc, char* argv[], bool erase = false, + ub2 charset = 0, + ub2 ncharset = 0, OCIEnv* environment = 0, std::auto_ptr<connection_factory> = std::auto_ptr<connection_factory> (0)); @@ -120,6 +127,18 @@ namespace odb return port_; } + ub2 + charset () const + { + return charset_; + } + + ub2 + ncharset () const + { + return ncharset_; + } + OCIEnv* environment () { @@ -144,6 +163,9 @@ namespace odb std::string host_; unsigned int port_; + ub2 charset_; + ub2 ncharset_; + auto_handle<OCIEnv> auto_environment_; OCIEnv* environment_; |