00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00038 #ifndef __vtkMySQLDatabase_h
00039 #define __vtkMySQLDatabase_h
00040
00041 #include "vtkSQLDatabase.h"
00042
00043 class vtkSQLQuery;
00044 class vtkMySQLQuery;
00045 class vtkStringArray;
00046 class vtkMySQLDatabasePrivate;
00047
00048 class VTK_IO_EXPORT vtkMySQLDatabase : public vtkSQLDatabase
00049 {
00050
00051 friend class vtkMySQLQuery;
00052
00053
00054 public:
00055 vtkTypeRevisionMacro(vtkMySQLDatabase, vtkSQLDatabase);
00056 void PrintSelf(ostream& os, vtkIndent indent);
00057 static vtkMySQLDatabase *New();
00058
00062 bool Open();
00063
00065 void Close();
00066
00068 bool IsOpen();
00069
00071 vtkSQLQuery* GetQueryInstance();
00072
00074 vtkStringArray* GetTables();
00075
00077 vtkStringArray* GetRecord(const char *table);
00078
00080 bool IsSupported(int feature);
00081
00083 bool HasError();
00084
00086 const char* GetLastErrorText();
00087
00089
00090 vtkGetStringMacro(DatabaseType);
00092
00094
00095 vtkSetStringMacro(HostName);
00096 vtkGetStringMacro(HostName);
00098
00100
00101 vtkSetStringMacro(User);
00102 vtkGetStringMacro(User);
00104
00106
00107 vtkSetStringMacro(Password);
00108 vtkGetStringMacro(Password);
00110
00112
00113 vtkSetStringMacro(DatabaseName);
00114 vtkGetStringMacro(DatabaseName);
00116
00118
00119 vtkSetStringMacro(ConnectOptions);
00120 vtkGetStringMacro(ConnectOptions);
00122
00124
00125 vtkSetClampMacro(ServerPort, int, 0, VTK_INT_MAX);
00126 vtkGetMacro(ServerPort, int);
00128
00130 virtual vtkStdString GetURL();
00131
00135 virtual vtkStdString GetTablePreamble( bool b ) { return b ? vtkStdString() :"IF NOT EXISTS "; }
00136
00138
00144 virtual vtkStdString GetColumnSpecification( vtkSQLDatabaseSchema* schema,
00145 int tblHandle,
00146 int colHandle );
00148
00150
00155 virtual vtkStdString GetIndexSpecification( vtkSQLDatabaseSchema* schema,
00156 int tblHandle,
00157 int idxHandle,
00158 bool& skipped );
00160
00164 bool CreateDatabase( const char* dbName, bool dropExisting );
00165
00168 bool DropDatabase( const char* dbName );
00169
00170 protected:
00171 vtkMySQLDatabase();
00172 ~vtkMySQLDatabase();
00173
00174 private:
00175
00176
00177 vtkSetStringMacro(DatabaseType);
00178
00179 vtkStringArray *Tables;
00180 vtkStringArray *Record;
00181
00182 char* DatabaseType;
00183 char* HostName;
00184 char* User;
00185 char* Password;
00186 char* DatabaseName;
00187 int ServerPort;
00188 char* ConnectOptions;
00189
00190
00191 vtkMySQLDatabasePrivate* const Private;
00192
00193
00194 vtkMySQLDatabase(const vtkMySQLDatabase &);
00195 void operator=(const vtkMySQLDatabase &);
00196 };
00197
00198 #endif // __vtkMySQLDatabase_h
00199