diff --git a/uppsrc/Sql/Sql.cpp b/uppsrc/Sql/Sql.cpp index 33bd53ac5..71fa4d207 100644 --- a/uppsrc/Sql/Sql.cpp +++ b/uppsrc/Sql/Sql.cpp @@ -551,8 +551,8 @@ bool Sql::Update(Fields nf, SqlId table) { return Update(nf, (const char *)~table); } -void Sql::Assign(SqlSource& s) { - if(cn) delete cn; +void Sql::SetSession(SqlSource& s) { + Detach(); cn = s.CreateConnection(); } @@ -624,6 +624,13 @@ void Sql::Detach() { if(cn) delete cn; cn = NULL; + param.Clear(); +} + +void Sql::Attach(SqlConnection *connection) +{ + Detach(); + cn = connection; } Sql::~Sql() { diff --git a/uppsrc/Sql/Sqls.h b/uppsrc/Sql/Sqls.h index 46e072740..b7995ed50 100644 --- a/uppsrc/Sql/Sqls.h +++ b/uppsrc/Sql/Sqls.h @@ -92,12 +92,14 @@ class Sql { friend Sql& AppCursorR(); Value Select0(const String& what); - void Assign(SqlSource& src); - void Detach(); enum _NULLSQL { NULLSQL }; Sql(_NULLSQL) { cn = NULL; } public: + void SetSession(SqlSource& src); + void Attach(SqlConnection *connection); + void Detach(); + String Compile(const SqlStatement& s); void Clear();