Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

hk_connection Class Reference

connects to the SQL Server More...

#include <hk_connection.h>

Inheritance diagram for hk_connection:

hk_class List of all members.

Public Types

enum  support_enum {
  SUPPORTS_AUTOINCCOLUMN = 1, SUPPORTS_BOOLCOLUMN = 2, SUPPORTS_DATECOLUMN = 3, SUPPORTS_TIMECOLUMN = 4,
  SUPPORTS_DATETIMECOLUMN = 5, SUPPORTS_BINARYCOLUMN = 6, SUPPORTS_MEMOCOLUMN = 7, SUPPORTS_TIMESTAMPCOLUMN = 8,
  SUPPORTS_TEXTCOLUMN = 9, SUPPORTS_INTEGERCOLUMN = 10, SUPPORTS_SMALLINTEGERCOLUMN = 11, SUPPORTS_FLOATINGCOLUMN = 12,
  SUPPORTS_SMALLFLOATINGCOLUMN = 13, SUPPORTS_PROPRIETARYCOLUMN = 19, SUPPORTS_SQL = 100, SUPPORTS_TRANSACTIONS = 101,
  SUPPORTS_REFERENTIALINTEGRITY = 102, SUPPORTS_NEW_DATABASE = 103, SUPPORTS_DELETE_DATABASE = 104, SUPPORTS_NEW_TABLE = 105,
  SUPPORTS_ALTER_TABLE = 106, SUPPORTS_DELETE_TABLE = 107, SUPPORTS_CREATE_INDEX = 108, SUPPORTS_DELETE_INDEX = 109,
  SUPPORTS_CHANGE_PASSWORD = 110, SUPPORTS_RENAME_DATABASE = 111, SUPPORTS_RENAME_TABLE = 112, SUPPORTS_VIEWS = 113,
  SUPPORTS_NEW_VIEW = 114, SUPPORTS_ALTER_VIEW = 115, SUPPORTS_DELETE_VIEW = 116, SUPPORTS_ADD_COLUMN = 117,
  SUPPORTS_DELETE_COLUMN = 118, SUPPORTS_CHANGE_COLUMNTYPE = 119, SUPPORTS_CHANGE_COLUMNNAME = 120, SUPPORTS_ALTER_PRIMARY_KEY = 121,
  SUPPORTS_ALTER_NOT_NULL = 122, SUPPORTS_SQL_GROUP_BY = 180, SUPPORTS_SQL_ORDER_BY = 181, SUPPORTS_SQL_HAVING = 182,
  SUPPORTS_SQL_WHERE = 183, SUPPORTS_SQL_ALIAS = 184, SUPPORTS_SQL_SUBSELECTS = 185, SUPPORTS_LOCAL_FILEFORMAT = 200,
  SUPPORTS_NONALPHANUM_FIELDNAMES = 201, SUPPORTS_NONASCII_FIELDNAMES = 202, SUPPORTS_SPACE_FIELDNAMES = 203
}
enum  need_enum {
  NEEDS_LOGIN = 0, NEEDS_HOST = 1, NEEDS_USERNAME = 2, NEEDS_PASSWORD = 3,
  NEEDS_SQLDELIMITER = 4, NEEDS_PORT = 5, NEEDS_DATABASENAME = 6, NEEDS_BOOLEANEMULATION = 7,
  NEEDS_NULL_TERMINATED_SQL = 8, NEEDS_TABLE_ALIAS_AS = 9, NEEDS_MANUAL_CHARSET = 10
}

Public Member Functions

virtual ~hk_connection ()
void set_host (const hk_string &h)
hk_string host (void)
void set_user (const hk_string &u)
hk_string user (void)
void set_password (const hk_string &p)
hk_string password (void)
void set_tcp_port (unsigned int t)
unsigned int tcp_port (void)
void set_defaultdatabase (const hk_string &)
hk_string defaultdatabase (void) const
virtual unsigned int default_tcp_port (void) const
bool connect (enum_interaction c=interactive)
bool disconnect (void)
bool is_connected (void)
vector< hk_string > * dblist (void)
hk_databasenew_database (const hk_string &name="")
bool rename_database (const hk_string &originalname, const hk_string &new_name)
virtual bool server_supports (support_enum) const
virtual bool server_needs (need_enum) const
virtual bool create_database (const hk_string &dbase)
virtual bool delete_database (const hk_string &dbase)
bool database_exists (const hk_string &databasename)
bool set_newpassword (const hk_string &newpassword)
void show_newpassworddialog (void)
bool show_passworddialog (void)
virtual hk_string drivername (void) const
void set_booleanemulation (bool emulate)
bool booleanemulation (void) const
hk_drivermanagerdrivermanager (void)
bool copy_database (hk_database *fromdatabase, bool schema_and_data, bool copy_local_files, progress_dialogtype *progressdialog=NULL)
hk_string last_servermessage (void)
hk_string databasepath (void)
virtual hk_string mimetype (void) const
virtual unsigned int maxfieldnamesize (void) const
virtual long int maxcharsize (void) const

Static Public Member Functions

static void set_passworddialog (password_dialogtype *)
static void set_newpassworddialog (newpassword_dialogtype *)
static hk_string check_capabilities (hk_connection *from, hk_connection *to)

Protected Member Functions

 hk_connection (hk_drivermanager *c)
virtual bool driver_specific_connect (void)
virtual bool driver_specific_disconnect (void)
virtual bool driver_specific_rename_database (const hk_string &oldname, const hk_string &newname)
virtual vector< hk_string > * driver_specific_dblist (void)
virtual hk_databasedriver_specific_new_database (void)
virtual bool driver_specific_new_password (const hk_string &)
virtual bool driver_specific_delete_database (const hk_string &dbase)
void db_remove (hk_database *d)
hk_string sqldelimiter (void)
void inform_databases_connect (void)
void inform_databases_disconnect (void)
virtual void savedata (ostream &s)
virtual void loaddata (const hk_string &definition)
void set_last_servermessage (const hk_string &m)
hk_databasedatabase (void) const
void delete_databasedirectory (const hk_string &db)
void delete_directory (const hk_string &d)

Static Protected Member Functions

static bool internal_copy_check (hk_connection *from, hk_connection *to, support_enum)

Protected Attributes

bool p_connected
vector< hk_stringp_databaselist

Friends

class hk_database
class hk_drivermanager

Detailed Description

connects to the SQL Server

Version:
Revision
1.58
Author:
Horst Knorr (hk_classes@knoda.org)
connects to the SQL Server. Set set_host,set_user, set_password , set_tcp_port if necessary and then call connect.


Member Enumeration Documentation

enum hk_connection::need_enum
 

see server_needs

Enumeration values:
NEEDS_LOGIN 
NEEDS_HOST 
NEEDS_USERNAME 
NEEDS_PASSWORD 
NEEDS_SQLDELIMITER 
NEEDS_PORT 
NEEDS_DATABASENAME 
NEEDS_BOOLEANEMULATION 
NEEDS_NULL_TERMINATED_SQL 
NEEDS_TABLE_ALIAS_AS 
NEEDS_MANUAL_CHARSET 

enum hk_connection::support_enum
 

see also serversupports. Defines what abilities and fieldtypes a database driver supports

Enumeration values:
SUPPORTS_AUTOINCCOLUMN 
SUPPORTS_BOOLCOLUMN 
SUPPORTS_DATECOLUMN 
SUPPORTS_TIMECOLUMN 
SUPPORTS_DATETIMECOLUMN 
SUPPORTS_BINARYCOLUMN 
SUPPORTS_MEMOCOLUMN 
SUPPORTS_TIMESTAMPCOLUMN 
SUPPORTS_TEXTCOLUMN 
SUPPORTS_INTEGERCOLUMN 
SUPPORTS_SMALLINTEGERCOLUMN 
SUPPORTS_FLOATINGCOLUMN 
SUPPORTS_SMALLFLOATINGCOLUMN 
SUPPORTS_PROPRIETARYCOLUMN 
SUPPORTS_SQL 
SUPPORTS_TRANSACTIONS 
SUPPORTS_REFERENTIALINTEGRITY 
SUPPORTS_NEW_DATABASE 
SUPPORTS_DELETE_DATABASE 
SUPPORTS_NEW_TABLE 
SUPPORTS_ALTER_TABLE 
SUPPORTS_DELETE_TABLE 
SUPPORTS_CREATE_INDEX 
SUPPORTS_DELETE_INDEX 
SUPPORTS_CHANGE_PASSWORD 
SUPPORTS_RENAME_DATABASE 
SUPPORTS_RENAME_TABLE 
SUPPORTS_VIEWS 
SUPPORTS_NEW_VIEW 
SUPPORTS_ALTER_VIEW 
SUPPORTS_DELETE_VIEW 
SUPPORTS_ADD_COLUMN 
SUPPORTS_DELETE_COLUMN 
SUPPORTS_CHANGE_COLUMNTYPE 
SUPPORTS_CHANGE_COLUMNNAME 
SUPPORTS_ALTER_PRIMARY_KEY 
SUPPORTS_ALTER_NOT_NULL 
SUPPORTS_SQL_GROUP_BY 
SUPPORTS_SQL_ORDER_BY 
SUPPORTS_SQL_HAVING 
SUPPORTS_SQL_WHERE 
SUPPORTS_SQL_ALIAS 
SUPPORTS_SQL_SUBSELECTS 
SUPPORTS_LOCAL_FILEFORMAT 
SUPPORTS_NONALPHANUM_FIELDNAMES 
SUPPORTS_NONASCII_FIELDNAMES 
SUPPORTS_SPACE_FIELDNAMES 


Constructor & Destructor Documentation

virtual hk_connection::~hk_connection  )  [virtual]
 

When the connection will be destroyed, the database created with new_database() and all its children will be destroyed

hk_connection::hk_connection hk_drivermanager c  )  [protected]
 


Member Function Documentation

bool hk_connection::booleanemulation void   )  const
 

static hk_string hk_connection::check_capabilities hk_connection from,
hk_connection to
[static]
 

returns messages of possible problems when copying tables between two different backends

bool hk_connection::connect enum_interaction  c = interactive  ) 
 

tries to connect to the SQL Server. If some information is missing (i.e. password) a dialog will ask for these values. You can set a GUI dependend dialog with set_passworddialog

Returns:
true if connecting was successful, else false.

bool hk_connection::copy_database hk_database fromdatabase,
bool  schema_and_data,
bool  copy_local_files,
progress_dialogtype progressdialog = NULL
 

copies whole databases

Parameters:
fromdatabase the database that should be copied
schema_and_data if true both the table schemas will be created and the data will be copied, if false only the table will be created
copy_local_files if true queries,forms and reports will be also copied
progressdialog if set this function will be regularly called to show the progress

virtual bool hk_connection::create_database const hk_string dbase  )  [virtual]
 

tries to create a new database. If successful it returns true else false

hk_database* hk_connection::database void   )  const [inline, protected]
 

bool hk_connection::database_exists const hk_string databasename  ) 
 

checks whether a database exists

hk_string hk_connection::databasepath void   ) 
 

void hk_connection::db_remove hk_database d  )  [protected]
 

vector<hk_string>* hk_connection::dblist void   ) 
 

if connected it returns a hk_stringlist of all existing databases on the SQL Server. The list will be created new every time you call this function. So be careful. Never use i.e. for_each(dblist()->begin(),dblist()->end(),anyfunction) Use instead: list<hk_string>* mylist=dblist(); for_each(mylist->begin(),mylist->end(),anyfunction)

virtual unsigned int hk_connection::default_tcp_port void   )  const [virtual]
 

returns the default tcp port of the the database driver;

hk_string hk_connection::defaultdatabase void   )  const
 

virtual bool hk_connection::delete_database const hk_string dbase  )  [virtual]
 

tries to delete a database.

Parameters:
dbase name of an existing database
Returns:
true if successful else flase

void hk_connection::delete_databasedirectory const hk_string db  )  [protected]
 

void hk_connection::delete_directory const hk_string d  )  [protected]
 

bool hk_connection::disconnect void   ) 
 

disconnects from the SQL Server

Returns:
true if successful.

virtual bool hk_connection::driver_specific_connect void   )  [inline, protected, virtual]
 

virtual vector<hk_string>* hk_connection::driver_specific_dblist void   )  [inline, protected, virtual]
 

virtual bool hk_connection::driver_specific_delete_database const hk_string dbase  )  [protected, virtual]
 

virtual bool hk_connection::driver_specific_disconnect void   )  [inline, protected, virtual]
 

virtual hk_database* hk_connection::driver_specific_new_database void   )  [inline, protected, virtual]
 

virtual bool hk_connection::driver_specific_new_password const hk_string  )  [inline, protected, virtual]
 

virtual bool hk_connection::driver_specific_rename_database const hk_string oldname,
const hk_string newname
[inline, protected, virtual]
 

hk_drivermanager* hk_connection::drivermanager void   ) 
 

virtual hk_string hk_connection::drivername void   )  const [virtual]
 

returns the name of the driver (e.g Mysql,Postgres etc.)

hk_string hk_connection::host void   ) 
 

void hk_connection::inform_databases_connect void   )  [protected]
 

void hk_connection::inform_databases_disconnect void   )  [protected]
 

static bool hk_connection::internal_copy_check hk_connection from,
hk_connection to,
support_enum 
[static, protected]
 

bool hk_connection::is_connected void   ) 
 

Returns:
true if connect was successful

hk_string hk_connection::last_servermessage void   )  [inline]
 

virtual void hk_connection::loaddata const hk_string definition  )  [protected, virtual]
 

load the tags <HOST><USER><TCP-PORT><sqldelimiter> with the equivalent values

Reimplemented from hk_class.

virtual long int hk_connection::maxcharsize void   )  const [inline, virtual]
 

returns the maximum length of the char() sql columntype

virtual unsigned int hk_connection::maxfieldnamesize void   )  const [inline, virtual]
 

virtual hk_string hk_connection::mimetype void   )  const [inline, virtual]
 

returns the mimetype of a local database format, if it is not a local database format it returns an empty string

hk_database* hk_connection::new_database const hk_string name = ""  ) 
 

if you want to use a database on the SQL Server create a hk_database element with this class. For each connection you can define one database. If you define another one the old one will be destroyed.

hk_string hk_connection::password void   ) 
 

bool hk_connection::rename_database const hk_string originalname,
const hk_string new_name
 

virtual void hk_connection::savedata ostream &  s  )  [protected, virtual]
 

saves the tags <HOST><USER><TCP-PORT><SQLDELIMITER> with the equivalent values

Reimplemented from hk_class.

virtual bool hk_connection::server_needs need_enum   )  const [inline, virtual]
 

shows what information the database server needs (e.g. password).

virtual bool hk_connection::server_supports support_enum   )  const [inline, virtual]
 

give information about the database server. See hk_definitions.h for details

void hk_connection::set_booleanemulation bool  emulate  ) 
 

If the database does not have a native boolean type(like Mysql), but hk_classes should use one datatype to emulate, set this to true (default) else switch it off.

void hk_connection::set_defaultdatabase const hk_string  ) 
 

void hk_connection::set_host const hk_string h  ) 
 

name of the host where the SQL Server is. Default is "localhost".

void hk_connection::set_last_servermessage const hk_string m  )  [protected]
 

bool hk_connection::set_newpassword const hk_string newpassword  ) 
 

sets a new password at the SQL server.

Parameters:
newpassword the new password
Returns:
true if successful else flase

static void hk_connection::set_newpassworddialog newpassword_dialogtype  )  [static]
 

It is possible to define a newpassworddialog, which will be shown when set_newpassword is called

void hk_connection::set_password const hk_string p  ) 
 

password for the SQL Server

static void hk_connection::set_passworddialog password_dialogtype  )  [static]
 

the passworddialog will be called from connect if necessary. You can define a GUI dependend dialog and set it with this function. What exactly is asked in the dialog is database driver dependend (i.e. the Mysql driver needs user, password, host and tcp_port)

void hk_connection::set_tcp_port unsigned int  t  ) 
 

TCP Port number of the SQL Server. Default is 3306.

void hk_connection::set_user const hk_string u  ) 
 

user name for the SQL Server.

void hk_connection::show_newpassworddialog void   ) 
 

shows a password dialog and sets the new password by calling set_newpassword If no passworddialog is set with set_newpassworddialog the necessary information will be queried at the standard output

bool hk_connection::show_passworddialog void   ) 
 

hk_string hk_connection::sqldelimiter void   )  [protected]
 

unsigned int hk_connection::tcp_port void   ) 
 

hk_string hk_connection::user void   ) 
 


Friends And Related Function Documentation

friend class hk_database [friend]
 

friend class hk_drivermanager [friend]
 


Member Data Documentation

bool hk_connection::p_connected [protected]
 

vector<hk_string> hk_connection::p_databaselist [protected]
 


The documentation for this class was generated from the following file:
Generated on Thu Mar 9 18:40:41 2006 for hk_classes by  doxygen 1.4.1