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 vtkTypeMacro(vtkMySQLDatabase, vtkSQLDatabase);
00056 void PrintSelf(ostream& os, vtkIndent indent);
00057 static vtkMySQLDatabase *New();
00058
00062 bool Open( const char* password = 0 );
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);
00109
00111
00112 vtkSetStringMacro(DatabaseName);
00113 vtkGetStringMacro(DatabaseName);
00115
00117
00118 vtkSetStringMacro(ConnectOptions);
00119 vtkGetStringMacro(ConnectOptions);
00121
00123
00124 vtkSetClampMacro(ServerPort, int, 0, VTK_INT_MAX);
00125 vtkGetMacro(ServerPort, int);
00127
00129 virtual vtkStdString GetURL();
00130
00134 virtual vtkStdString GetTablePreamble( bool b ) { return b ? vtkStdString() :"IF NOT EXISTS "; }
00135
00137
00144 virtual vtkStdString GetColumnSpecification( vtkSQLDatabaseSchema* schema,
00145 int tblHandle,
00146 int colHandle );
00148
00150
00156 virtual vtkStdString GetIndexSpecification( vtkSQLDatabaseSchema* schema,
00157 int tblHandle,
00158 int idxHandle,
00159 bool& skipped );
00161
00165 bool CreateDatabase( const char* dbName, bool dropExisting );
00166
00169 bool DropDatabase( const char* dbName );
00170
00171 protected:
00172 vtkMySQLDatabase();
00173 ~vtkMySQLDatabase();
00174
00178 virtual bool ParseURL(const char* url);
00179
00180 private:
00181
00182
00183 vtkSetStringMacro(DatabaseType);
00184
00185 vtkStringArray *Tables;
00186 vtkStringArray *Record;
00187
00188 char* DatabaseType;
00189 char* HostName;
00190 char* User;
00191 char* Password;
00192 char* DatabaseName;
00193 int ServerPort;
00194 char* ConnectOptions;
00195
00196
00197 vtkMySQLDatabasePrivate* const Private;
00198
00199
00200 vtkMySQLDatabase(const vtkMySQLDatabase &);
00201 void operator=(const vtkMySQLDatabase &);
00202 };
00203
00204 #endif // __vtkMySQLDatabase_h
00205