VTK  9.2.6
vtkMySQLDatabase.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMySQLDatabase.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright 2008 Sandia Corporation.
17  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
18  the U.S. Government retains certain rights in this software.
19 -------------------------------------------------------------------------*/
39 #ifndef vtkMySQLDatabase_h
40 #define vtkMySQLDatabase_h
41 
42 #include "vtkIOMySQLModule.h" // For export macro
43 #include "vtkSQLDatabase.h"
44 
45 class vtkSQLQuery;
46 class vtkMySQLQuery;
47 class vtkStringArray;
49 
50 class VTKIOMYSQL_EXPORT vtkMySQLDatabase : public vtkSQLDatabase
51 {
52 
53  friend class vtkMySQLQuery;
54 
55 public:
57  void PrintSelf(ostream& os, vtkIndent indent) override;
58  static vtkMySQLDatabase* New();
59 
65  bool Open(const char* password = nullptr) override;
66 
70  void Close() override;
71 
75  bool IsOpen() override;
76 
80  vtkSQLQuery* GetQueryInstance() override;
81 
85  vtkStringArray* GetTables() override;
86 
90  vtkStringArray* GetRecord(const char* table) override;
91 
95  bool IsSupported(int feature) override;
96 
100  bool HasError() override;
101 
105  const char* GetLastErrorText() override;
106 
108 
111  const char* GetDatabaseType() override { return this->DatabaseType; }
113 
115 
118  vtkSetStringMacro(HostName);
119  vtkGetStringMacro(HostName);
121 
123 
126  vtkSetStringMacro(User);
127  vtkGetStringMacro(User);
129 
131 
134  vtkSetStringMacro(Password);
136 
138 
141  vtkSetStringMacro(DatabaseName);
142  vtkGetStringMacro(DatabaseName);
144 
146 
151  vtkSetMacro(Reconnect, int);
152  vtkGetMacro(Reconnect, int);
153  vtkBooleanMacro(Reconnect, int);
155 
157 
160  vtkSetClampMacro(ServerPort, int, 0, VTK_INT_MAX);
161  vtkGetMacro(ServerPort, int);
163 
167  vtkStdString GetURL() override;
168 
175  vtkStdString GetTablePreamble(bool b) override { return b ? vtkStdString() : "IF NOT EXISTS "; }
176 
189  vtkSQLDatabaseSchema* schema, int tblHandle, int colHandle) override;
190 
202  vtkSQLDatabaseSchema* schema, int tblHandle, int idxHandle, bool& skipped) override;
203 
208  bool CreateDatabase(const char* dbName, bool dropExisting);
209 
214  bool DropDatabase(const char* dbName);
215 
221  bool ParseURL(const char* url) override;
222 
223 protected:
225  ~vtkMySQLDatabase() override;
226 
227 private:
228  // We want this to be private, a user of this class
229  // should not be setting this for any reason
230  vtkSetStringMacro(DatabaseType);
231 
232  vtkStringArray* Tables;
233  vtkStringArray* Record;
234 
235  char* DatabaseType;
236  char* HostName;
237  char* User;
238  char* Password;
239  char* DatabaseName;
240  int ServerPort;
241  int Reconnect;
242 
243  vtkMySQLDatabasePrivate* const Private;
244 
245  vtkMySQLDatabase(const vtkMySQLDatabase&) = delete;
246  void operator=(const vtkMySQLDatabase&) = delete;
247 };
248 
249 #endif // vtkMySQLDatabase_h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:38
virtual vtkStdString GetColumnSpecification(vtkSQLDatabaseSchema *schema, int tblHandle, int colHandle)
Return the SQL string with the syntax to create a column inside a "CREATE TABLE" SQL statement...
virtual bool IsSupported(int vtkNotUsed(feature))
Return whether a feature is supported by the database.
#define VTK_INT_MAX
Definition: vtkType.h:155
virtual bool Open(const char *password)=0
Open a new connection to the database.
virtual bool ParseURL(const char *url)=0
Subclasses should override this method to determine connection parameters given the URL...
virtual bool HasError()=0
Did the last operation generate an error.
a vtkAbstractArray subclass for strings
virtual vtkStdString GetURL()=0
Get the URL of the database.
represent an SQL database schema
virtual vtkStringArray * GetRecord(const char *table)=0
Get the list of fields for a particular table.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
maintain a connection to a MySQL database
maintain a connection to an sql database
friend class vtkMySQLDatabase
Definition: vtkMySQLQuery.h:50
virtual void Close()=0
Close the connection to the database.
virtual vtkStdString GetIndexSpecification(vtkSQLDatabaseSchema *schema, int tblHandle, int idxHandle, bool &skipped)
Return the SQL string with the syntax to create an index inside a "CREATE TABLE" SQL statement...
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual vtkSQLQuery * GetQueryInstance()=0
Return an empty query on this database.
virtual bool IsOpen()=0
Return whether the database has an open connection.
virtual const char * GetLastErrorText()=0
Get the last error text from the database I'm using const so that people do NOT use the standard vtkG...
vtkStdString GetTablePreamble(bool b) override
Return the SQL string with the syntax of the preamble following a "CREATE TABLE" SQL statement...
executes an sql query and retrieves results
Definition: vtkSQLQuery.h:74
const char * GetDatabaseType() override
String representing database type (e.g.
vtkSQLQuery implementation for MySQL databases
Definition: vtkMySQLQuery.h:47
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
virtual vtkStringArray * GetTables()=0
Get the list of tables from the database.