comparison Framework/Odbc/OdbcDatabase.h @ 329:b5fb8b77ce4d

initial commit of ODBC framework
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 10 Aug 2021 20:08:53 +0200
parents
children 16aac0287485
comparison
equal deleted inserted replaced
328:6a49c495c940 329:b5fb8b77ce4d
1 /**
2 * Orthanc - A Lightweight, RESTful DICOM Store
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21
22 #pragma once
23
24 #include "OdbcEnvironment.h"
25
26 #include "../Common/IDatabaseFactory.h"
27
28 #include <Compatibility.h>
29
30 #include <set>
31
32
33 namespace OrthancDatabases
34 {
35 class OdbcDatabase : public IDatabase
36 {
37 private:
38 class OdbcImplicitTransaction;
39 class OdbcExplicitTransaction;
40
41 SQLHDBC handle_;
42 Dialect dialect_;
43 unsigned int dbmsMajorVersion_;
44
45 public:
46 OdbcDatabase(OdbcEnvironment& environment,
47 const std::string& connectionString);
48
49 virtual ~OdbcDatabase();
50
51 SQLHDBC GetHandle()
52 {
53 return handle_;
54 }
55
56 std::string FormatError();
57
58 void ListTables(std::set<std::string>& target);
59
60 // "name" must be in lower-case
61 bool DoesTableExist(const std::string& name);
62
63 void ExecuteMultiLines(const std::string& query);
64
65 virtual Dialect GetDialect() const ORTHANC_OVERRIDE
66 {
67 return dialect_;
68 }
69
70 virtual IPrecompiledStatement* Compile(const Query& query) ORTHANC_OVERRIDE;
71
72 virtual ITransaction* CreateTransaction(TransactionType type) ORTHANC_OVERRIDE;
73
74 // https://en.wikipedia.org/wiki/History_of_Microsoft_SQL_Server
75 unsigned int GetDbmsMajorVersion() const;
76
77 static IDatabaseFactory* CreateDatabaseFactory(unsigned int maxConnectionRetries,
78 unsigned int connectionRetryInterval,
79 const std::string& connectionString,
80 bool checkEncodings);
81 };
82 }