Programming MySQL with Visual C Programming MySQL with Visual C TUTORIAL. Jacques Abada 1 / 26

Size: px
Start display at page:

Download "Programming MySQL with Visual C++ 6.0. Programming MySQL with Visual C++ 6.0 TUTORIAL. Jacques Abada 1 / 26"

Transcription

1 Programming MySQL with Visual C TUTORIAL BY Jacques Abada Version 1.0 October / 26

2 Document entirely written with StarOffice 5.2 under Windows PDF file made with Acrobat 5 Copyright 2001, Jacques Abada Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation licence" in the file licence.pdf. The author remains the only owner of this text and accompanying source code. StarOffice is a registered trademark of Sun Microsystems Acrobat is a registered trademark of Adobe Corp. Windows is a registered trademark of Microsoft Corp. Staroffice is available for free Acrobat is a commercial software. This document is mainly available on my web site ( But also on MySQL site: in the contributions section. I wish to thank Paul Dubois for reviewing the english version of this text. 2 / 26

3 Introduction The goal of this tutorial is to explore some of the MySQL API functions through a Windows application written in C++, with Visual C++. I didn't make any particular portability effort, since I used the standard Visual C++ application framework, MFC, in order to handle the user interface controls' logic I wrapped with MySQL functions. Actually, the accompanying sample program shows how to use the MySQL functions with a C++ application framework. Thus, any C++ programmer can easily use the code typical to MySQL in any other framework he is comfortable with. In a program, there is basically the user interface and the useful code. The user interface is dependant, in that it changes from an operating system to the other and from a compiler to the other. The useful code, in the contrary, is common to all of them. A MySQL function like mysql_query() has the same behavior, from the programmer's point of view, whether it is called from a C, C++, Delphi program, under Windows or Linux operating system. The sample program I offer as an illustration to this tutorial, is a dialog based application, which can connect to a MySQL server (either locally or over a network), select a database from this server (provided the user has the rights to), and to display, either the structure or the data within it. Finally, an informations dialog box shows some information like the server and client versions, process ID, etc... This application is to demonstrate how easy it is to write a Windows application able to deal with data residing on a MySQL serverresiding on a Linux machine. A MySQL connection is transparent, since one has not to bother on how the connection is done at a lower level, the mysql_real_connect() deals with those details for us. The following text describes all the steps involved in the creation of the sample program. The reader must have a basic knowledge of C++, as well as a good understanding of the Visual C development environment, and of course a good understanding of MySQL and SQL. On the MySQL subject, the reader should read the excellent book of Paul Dubois 1. On Visual C++, here are some references which might be useful 2. I have no knowledge of any book dealing with programming MySQL with Visual C++. All aspects of database programming with VC++ concern Microsoft proprietary technologies. On the internet, two sites 3 in english deal with Visual C++. Also, the MySQL official site 4 has many useful resources and links. 1 Paul Dubois: MySQL publié aux éditions New Riders. Edition française Campus Press (ISBN: ). Cet ouvrage explique non seulement l'utilisation de MySQL mais présente la programmation avec divers langages (PHP, C, Perl). 2 Mike Blaszczak: Professional MFC with Visual C++ 6, Wrox Press Collectif: MFC Programming with Visual C++ 6, collection Unleashed chez SAMS Kruglinski & autres: Atelier Visual C Microsoft Press / 26

4 I Required configuration Visual C compiler MySQL client libs and include files version x A Windows work station (NT ou 2000) The sample application canaccess local or distant MySQL databases. Depending on where the databases reside, we'll need: 1. The databases are accessed over the network: In this case we just need the include files and libs. (lib\opt and \include directories in the MySQL installation tree). 2. The database is accessed locally: We'll need to install the server service and the client libs (basically the mysqld-nt service and the libs and include files). Connection can be done to the localhost. The best is to run the client application under Windows and access the databases over the network, preferably on a Linux or UNIX machine. 4 / 26

5 II - Visual C++ settings for MySQL We need to tell Visual C++ where to find the include and lib files in order to be able to compile our project. We'll open the dialog box underthe Tools Options menu, and choose the Directories folder. There, we'll successively select the include files path. (Fig. 1) Figure 1: Directory where to find the include files and the library files path (Fig.2) Figure 2: Directory where to find the lib files 5 / 26

6 III Creating the skeleton of our application We create a Dialog based application. At step 2, be sure to check the case Windows Sockets check box. We can unselect the ActiveX Controls support. At step 3, we let all options as default. We then click the finish button to generate the skeletal project files. A directory named MySample is created and contains all of the files generated by AppWizard. Our project has the following classes: 1. CAboutDlg: Class for the About Box 2. CMySampleApp: Class defining our application object (our main dialog box contructor and application initialisation) 3. CMySampleDlg: Classe for our main dialog box, where we'll add code all along this tutorial. To be able to use the MySQL function, we'll need to include only one file (mysql.h) to our project. We edit the mysampledlg.h file and add this line #include <mysql.h> (Fig. 3) near the beginning of the file In case you forget to add the Winsock support, you can add it later. Just add the line #include <afxsock.h> under the last #endif in stdafx.h file, like in the next figure. Mysql.h include a number of other include files (the MySQL include directory contains many but only mysql.h is needed. 6 / 26

7 I Main dialog box IV Creating the dialog box of our application AppWizard already has created a dialog box with two push buttons (OK and Cancel). These buttons are mapped to the framework functions CDialog::OnOK() and CDialog::OnCancel(), which call a default handler for when they are clicked. We'll delete those buttons and add the following controls: Control to insert Dialog Box A button labelled Connect A button labelled Disconnect A button labelled Infos A button labelled Quitter A combobox preceeded with a static text labelled Databases A combobox preceeded with a static text labelledtables A listview with Report mode property A radio button labelled Structure View A radio button labelled Data View Ressource ID IDD_MYESSAI_DIALOG IDC_CONNECT IDC_DISCONNECT IDC_INFOS IDOK IDC_DATABASES IDC_TABLES IDC_LV_DB IDC_STRUCTURE_VIEW IDC_DATA_VIEW 7 / 26

8 The two radio button are mutually exclusive, i.e., none of them are checked at the same time. To achieve this we have to select both of themand check Auto in the controls's properties dialog box. We can try the desired behavior with the preview mode. Connection dialog box To create this dialog, we have to click with the right mouse button on the Dialog folder of the Resource View area, and choose Insert Dialog. We then resize this dialog to look like the one displayed below: It will contain the following controls: Type of control Ressource ID Dialog Box IDD_CONNECT_DLG An edit control with a static label Host IDC_HOST An edit control with a static label User IDC_USER An edit control with a static label Password IDC_PASSWORD An edit control with a static label Port IDC_PORT The OK button changed to Connect IDOK (*) The Cancel button changed to Cancel IDCANCEL (*) (*) These two buttons are automatically created by AppWizard. They have the IDOK and IDCANCEL default name. We shouldn't change those names. 8 / 26

9 Information dialog box Dialog Box ListBox control Type of control Ressource ID IDD_INFOS_DLG IDC_INFOS The Cancel button will be deleted and the OK button will be leaved as is. 9 / 26

10 V Connection code The goal here is to retrieve the information that the user has typed in the fields of the connection dialog box after he has clicked the Connect button. This button returns IDOK to the calling function. If the user clicks on the Cancel button, then IDCANCEL is returned. When the main dialog displays, the user typically clicks on the Connect button. This calls the CMySample::OnConnect(). This function creates a variable of type CConnexionDlg and, via this variable, displays the connection dialog box, with a call to CDialog::DoModal() function. We then test that IDOK is returned, asin the followinf code: void CMySampleDlg::OnConnect() // We pick up the user supplied data from the connection dialog // and we copy them in our member variables. CConnexionDlg dlg; if (dlg.domodal() == IDOK) We shall begin with creating a new class for our Connection dialog box. We need a class for this dialog. We also need a couple of member variables to map the various which will hold the user input. We finally need to access our dialog from within our main application dialog. Here are the steps: As soon as the the controls have been inserted into the connection dialog box, we should run ClassWizard. It will detect that the dialog is a new ressource and will offer to create a new class for it. In a dialog like the one above, we will let the «Create a new class» option checked and click OK. 10 / 26

11 The second dialog box will display to enter the new class name. In the «Name» edit control, simply type «CConnexionDlg» and the «File name» edit will fill in automatically with a file name based on the new class name. To access this new dialog, we'll need to add the ConnexionDlg.h include file to MySampleDlg.cpp #include "ConnexionDlg.h" Then we'll create four data members to map each of our four edit controls. We run ClassWizard another time and choose the Member Variables folder. 11 / 26

12 And we'll successively select IDC_HOST, IDC_PASSWORD, IDC_PORT and IDC_USER ressource IDs, and click on the Add Variable button to create 1. A member variable m_host of type Cstring 2. A member variable m_password of type Cstring 3. A member variable m_port of type UINT 4. and a member variable m_user of type CString The IDC_PORT has to be initialized. Actually MySQL uses port 3306 as default port for the connection. Therefore, we'll change the value of m_port data member in the contructor of CConnexionDlg class, like below: CConnexionDlg::CConnexionDlg(CWnd* pparent /*=NULL*/) : CDialog(CConnexionDlg::IDD, pparent) //AFX_DATA_INIT(CConnexionDlg) m_host = _T(""); m_password = _T(""); m_port = 3306; m_user = _T(""); //AFX_DATA_INIT By default, m_port is set to à 0. We'll just replace this default value with And this new value will appear in our edit control as the default value. That's all we'll need to do to use our connection dialog. All the retrieval and use of the values typed in by the user are held by functions from our main CMySampleDlg class. 12 / 26

13 VI Coding the connection A MySQL connection is a two-step process: 1. Initializing a MYSQL structure 2. Real connection. Initialization of the MYSQL structure is done with mysql_init() function, which returns a pointer to av MYSQL structure, or NULL in case of memory error. The pointer to the structure is called a connection handle, because it is used by many other MySQL functions. We first create a variable of type MYSQL*. private: void ClearListView(); CString Host; CString Password; UINT Port; CString User; MYSQL * mydata; In MySampleDlg.h file, which we'll name mydata in the private section of our CMySampleDlg declaration file (header file). To really connect to our server, we'll connect a function to the click message of the Connect button of the main dialog box. With the help of ClassWizard we'll call our function OnConnect(). Instead of writing all of the connection code in this handler function, we'll just display the connection dialog box, retrieve the user supplied input values and pass them to another function which will deal with the real connection. Then when we return from the real connection function, we'll display the databases list available on the server and place their names in a combo box. Have a look at the following code: 13 / 26

14 void CMySampleDlg::OnConnect() // On récupère les données de la boite de dialogue connexion // et on les copie dans nos variables membres. CConnexionDlg dlg; if (dlg.domodal() == IDOK) Host = dlg.m_host; User = dlg.m_user; Password = dlg.m_password; Port = dlg.m_port; if (!Connexion(Host, User, Password, Port)) return; if (!GetDatabases()) MessageBox("Can't get the databases from the server"); m_myinfosbtn.enablewindow(true); m_connect.enablewindow(false); m_disconnect.enablewindow(true); When DoModal() function returns, if the user chooses IDOK, the values of the four connection dialog edit controls are copied in the Host, User, Password and Port variables which we created in CMySampleDlg main dialog class (of type CString, CString, CString, UINT). Then, we pass those values to the Connexion() function. This function has the following prototype: BOOL CMySampleDlg::Connexion(CString& Host, CString& User, CString& Password, UINT Port); this function returns TRUE if the connection succeeds, and FALSE if it succeeds not. Returning TRUE makes us call the next function CMySampleDlg::GetDatabases(). This function has the following prototype: BOOL CMySampleDlg::GetDatabases(); and also returns TRUE for success and FALSE for failure. The last three lines of code activate or deactivate some buttons based on the results (enabling the Infos and Disconnect buttons and disabling the Connect button).. Let's have a look at the CMySampleDlg::Connect(CString&, CString&, CString&, UINT) function. 14 / 26

15 BOOL CMySampleDlg::Connexion(CString& Host, CString& User, CString& Password, UINT Port) if ( (mydata = mysql_init(null)) && mysql_real_connect( mydata, Host, User, Password, NULL, Port, NULL, 0) ) else m_disconnect.enablewindow(true); m_disconnect.enablewindow(false); IsConnected = TRUE; return TRUE; CString msg; msg.format("la connexion a échoué à cause de l'erreur\nn : %d\n" "Texte de l'erreur : %s", mysql_errno(mydata), mysql_error(mydata)); MessageBox(msg, "Erreur", MB_ICONERROR); return FALSE; The first line initializes the mydata variable through the call to the mysql_init(mysql*) function. This function takes a NULL parameter. In case of success it returns a connection handle and NULL in case of failure; we then call the mysql_real_connect() function, passing it the following parameters: 1. adress of mydata (connection handle) 2. Value of the HOST field 3. Value of the USER field 4. Value of the PASSWORD field 5. NULL (we don't open a default database) 6. Value of the PORT field 7. NULL (we don't use UNIX sockets) 8. 0 (no flags). About the flags, an interesting list is available in MySQL documentation at the mysql_real_connect() section. Take the time to read it. mysql_real_connect returns a valid connection handle, or NULL in case of failure. In this case we format an error message with the error number and the error text (obtained with the call to mysql_errno() and mysql_error() ) functions. Let's look at the GetDatabases() function. 15 / 26

16 BOOL CMySampleDlg::GetDatabases() if (!IsConnected) return FALSE; MYSQL_RES *res; res = mysql_list_dbs(mydata, NULL); MYSQL_ROW row; while ( (row = mysql_fetch_row(res))) m_databases.addstring(row[0]); mysql_free_result(res); return TRUE; We first created a boolean variable named IsConnected. This flag is set to FALSE at the beginning of the program, and is set to TRUE when a valid connection handle is retrieved. We use this flag all along our program to test that we always have a valid connection handle before calling other MySQL functions. We then create a variable res of type MYSQL_RES* and we retrieve the result set with the mysql_list_dbs() function. This function takes two parameters, the first is the connection handle and the second is a search pattern. Here we pass NULL to retrieve all the databases names. Then we fetch each row of the result set with the mysql_fetch_row() function, as many times as there are rows. When no more rows are available in the result set, the function simply returns NULL. During each loop of mysql_fetch_row(), we add the first row (row[0]) to the combo box. m_databases is a data member of type CComboBox mapped to the combo box labelled Databases. We call the AddString member function to add a new string to the combo box. When we're done, we free the ressources used with a call to mysql_free_result(). At this point, we'll now add the code to display the table list in the second combo box. (mapped to m_tables data member of type CComboBox). We have to know at first which database to select before showing its tables if any. Up to now, we have created a connection to the server and displayed the databases in a combo box. Now, we'll need to display the tables based on the database a user has chosen. We'll have to connect code to the CBN_SELCHANGE message sent by Windows when the selection in a combo box changes (e.g. when a user selects an item in the combo box). To achieve this, we'll have to retrieve the user selection (which is the name of the selected database), and pass it to the mysql_select_db() function. This function will then change the active database, and call the mysql_list_tables() function to display the tables list in our second combo box (labelled Tables). We miss another function to change the active database. We'll call it ChangeDB(). Its prototype is: BOOL CMySampleDlg::ChangeDB(CString& db_name); 16 / 26

17 It take just one parameter, which is the name of the new database to use. The function returns TRUE if it succeeds. If it fails it returns an error message showing the error number and the error text. Here it is: BOOL CMySampleDlg::ChangeDB(CString& db_name) if (!IsConnected) return FALSE; int Err = mysql_select_db(mydata, db_name); if (Err == 0) return TRUE; else CString msg; msg.format("l'accès à la base %s a échoué à cause de l'erreur\nn : %d\n" "Texte de l'erreur : %s", db_name, mysql_errno(mydata), mysql_error(mydata)); MessageBox(msg, "Erreur", MB_ICONERROR); return FALSE; 17 / 26

18 Now we have changed the active database, we can retrieve and display the name of the tables it contains. The mysql_list_tables() function is quite similar to mysql_list_dbs(), the first parameter is a valid connection handle, and the second parameter is a search pattern, here we just pass NULL to retrieve all the tables. void CMySampleDlg::OnSelchangeDatabases() if (!IsConnected) return; CString currdb; int nindex = m_databases.getcursel(); m_databases.getlbtext(nindex, currdb); if (!ChangeDB(currDB)) return; m_tables.resetcontent(); MYSQL_RES *res; res = mysql_list_tables(mydata, NULL); MYSQL_ROW row; while ( ( row = mysql_fetch_row(res))) m_tables.addstring(row[0]); mysql_free_result(res); This code functions like the one used to retrieve the databases names. We use a variable of type MYSQL_RES* and we step through the result set returned by the mysql_list_tables() function. In our while loop, that is, as many lines as there are to fetch, we retrieve the first column and insert its contents to the combo box. At the end, we call mysql_free_result() to free the ressources. 18 / 26

19 VII Display the data in the ListView control Now that we have retrieved the databases list and for any selected database its tables list, we can deal with the CBN_SELCHANGE message of the second combo box (tables). Here, when the user selects a table, we'll test if he wants to display the Structure View or the Data View in the ListView control. We'll create a data member for each of the two radio buttons in order to access their properties. We first create a data member called m_bdataview of type CButton we'll map to the Structure View radio, and a data member called m_bstructureview also of type CButton, mapped to the Data View radio. In order to test whether one or the other is checked, we'll use the CButton::GetCheck() function, which will return an integer indicating the button state. A value of 1 indicates the control is checked. All occurs in the code of the CBN_SELCHANGE message handler for the combo box IDC_TABLES. We begin with retrieving the text selected by the user in the Databases combo box. We then format a query string containing this text. At this point, we test which radio button is checked. If Structure View is checked, then we format a query like «describe nom_table»; if Data View is checked, then we format a query like «select * from nom_table». // Get the select text in the combo box int nindex = m_tables.getcursel(); m_tables.getlbtext(nindex, currtable); // Check whether Structure View or Data View is checked // and format the query accordingly if (m_bdataview.getcheck() == 1) query.format("select * FROM %s", currtable); else if (m_bstructureview.getcheck() == 1) query.format("describe %s", currtable); We then run the query with the mysql_query() functions with the correct query string. if (( mysql_query(mydata, query) == 0)) res = mysql_store_result(mydata); num_fields = mysql_num_fields(res); fd = mysql_fetch_fields(res); The mysql_query() function returns 0 in case of success. After the function returns, we call the mysql_store_result() function to retrieve the result set in a res variable of type MYSQL_RES*. We then retrieve the number of fields returned by the mysql_num_fields() function. This number is needed because we'll have to build the ListView headers based on the number of fields of a particular table. We do not know the nomber of columns a table contains in advance. And therefore, we'll need to check how many columns the query returns, and then create a function we'll call BuildListView() to display the correct 19 / 26

20 number of ListView control headers and display the field name in each of them. This function is the following: BOOL CMySampleDlg::BuildListView(UINT num_cols, MYSQL_FIELD *fd) UINT i; LVCOLUMN m_pcol; for (i = 0; i < num_cols; i++) m_pcol.psztext = fd[i].name; m_lvdbtable.insertcolumn(i, m_pcol.psztext, LVCFMT_LEFT, 100); return TRUE; We mapped our listview to a data member named m_lvdbtable of type CListCtrl. The first parameter of the BuildListView() is the number of fields returned by the mysql_nul_fields() function. The second parameter is a variable of type MYSQL_FIELD*. This function builds as many headers as there are columns in the result set and displays the column name in the header section of the control. It returns TRUE to tell the caller that it is done with success. We'll now displays some nice lines in our tabularview. This is done with setting the extended style of our ListView control: // Build the listview headers based on the number of columns returned if (!BuildListView(num_fields, fd)) return; // Set some nice grid lines and effect to the listview m_lvdbtable.setextendedstyle(lvs_ex_fullrowselect LVS_EX_ONECLICKACTIVATE LVS_EX_GRIDLINES LVS_EX_INFOTIP); Now we're done with the building of our ListView headers and nice look and feel. We'll now fill in the control with data. We do this with the following code: 20 / 26

21 // Get all the rows in the result set while ( (row = mysql_fetch_row(res))) for (j = 0; j < num_fields; j++) // Fill in the listview items and subitems lvitem.mask = LVIF_TEXT; lvitem.iitem = i; lvitem.isubitem = j; lvitem.psztext = row[j]; m_lvdbtable.insertitem(&lvitem); m_lvdbtable.setitem(&lvitem); i++; // Next Item else // Something went wrong CString msg; msg.format("error %d in query %s\n%s", mysql_errno(mydata), query, mysql_error(mydata)); MessageBox(msg, "Error in Query", MB_ICONERROR); // Now free the resources mysql_free_result(res); As usual, we iterate through a while loop and call the mysql_fetch_row() function which retrieves the result set line by line. We then cycle through the fields to fill in the ListView one cell at the time. If something goes wrong, we format a message and display it. We then free the resources. The code we explained above is displayed completely below. The next step is about the informations dialog box. This box is far less complicated than the code we saw up to now. It shows some other useful MySQL functions. 21 / 26

22 void CMySampleDlg::OnSelchangeTables() CString query; CString currtable; LVITEM lvitem; MYSQL_RES *res; MYSQL_FIELD *fd; UINT num_fields; MYSQL_ROW row; UINT i = 0; UINT j = 0; // Clear any previous display of data ClearListView(); // Get the select text in the combo box int nindex = m_tables.getcursel(); m_tables.getlbtext(nindex, currtable); // Check whether Structure View or Data View is checked // and format the query accordingly if (m_bdataview.getcheck() == 1) query.format("select * FROM %s", currtable); else if (m_bstructureview.getcheck() == 1) query.format("describe %s", currtable); // Run the query if (( mysql_query(mydata, query) == 0)) res = mysql_store_result(mydata); num_fields = mysql_num_fields(res); fd = mysql_fetch_fields(res); // Build the listview headers based on the number of columns returned if (!BuildListView(num_fields, fd)) return; // Set some nice grid lines and effect to the listview m_lvdbtable.setextendedstyle(lvs_ex_fullrowselect LVS_EX_ONECLICKACTIVATE LVS_EX_GRIDLINES LVS_EX_INFOTIP); // Get all the rows in the result set while ( (row = mysql_fetch_row(res))) for (j = 0; j < num_fields; j++) // Fill in the listview items and subitems lvitem.mask = LVIF_TEXT; lvitem.iitem = i; lvitem.isubitem = j; lvitem.psztext = row[j]; m_lvdbtable.insertitem(&lvitem); m_lvdbtable.setitem(&lvitem); i++; // Next Item 22 / 26

23 else // Something went wrong CString msg; msg.format("error %d in query %s\n%s", mysql_errno(mydata), query, mysql_error(mydata)); MessageBox(msg, "Error in Query", MB_ICONERROR); // Now free the resources mysql_free_result(res); 23 / 26

24 VIII Coding the Infos dialog box I chose to code the Infos dialog box as a non-modal dialog and to deal with its contents from within the OnMyInfos() function in our main application dialog class (CMySampleDlg). void CMySampleDlg::OnMyINFOS() if (!IsConnected) return; CMyInfos *pdlg; pdlg = new CMyInfos(); if (pdlg!= NULL) BOOL ret = pdlg->create(idd_infos_dlg, this); if (!ret) MessageBox("Cannot create the informations dialog box"); pdlg->m_myinfos.resetcontent(); int nindex = pdlg->m_myinfos.getcount(); CString buff; buff.format("client Info : %s", mysql_get_client_info()); pdlg->m_myinfos.insertstring(nindex++, buff); buff.format("host Info : %s", mysql_get_host_info(mydata)); pdlg->m_myinfos.insertstring(nindex++, buff); buff.format("server Info : %s", mysql_get_server_info(mydata)); pdlg->m_myinfos.insertstring(nindex++, buff); buff.format("thread ID : %ld", mysql_thread_id(mydata)); pdlg->m_myinfos.insertstring(nindex++, buff); buff.format("protocol info : %ld", mysql_get_proto_info(mydata)); pdlg->m_myinfos.insertstring(nindex++, buff); The code snipet above shows the use of the mysql_get_client_info(), mysql_get_host_info(), mysql_get_server_info(), mysql_get_thread_id(), and mysql_get_proto_info() functions. These functions respectively return the version of the client library, the connection type, the server version, the process ID and an integer identifying the protocol used by the connection. A good place to read more about the last function can be found in MySQL function. 24 / 26

25 MYSQL_RES *res; MYSQL_ROW row; MYSQL_FIELD *fd; unsigned int i; CString tmp; res = mysql_list_processes(mydata); while ((row = mysql_fetch_row(res))!= NULL) mysql_field_seek(res, 0); for (i = 0; i < mysql_num_fields(res); i++) fd = mysql_fetch_field(res); if (row[i] == NULL) buff.format(" %-*s ", fd->max_length, "NULL"); else if (IS_NUM(fd->type)) buff.format(" %*s ", fd->max_length, row[i]); else buff.format(" %-*s ", fd->max_length, row[i]); tmp += buff; pdlg->m_myinfos.insertstring(nindex++, tmp); tmp.empty(); else pdlg->showwindow(sw_show); pdlg->centerwindow(); mysql_free_result(res); MessageBox("Error creating object"); The rest of the code reminds the mysql_list_processes(), which corresponds to the «SHOW PROCESSLIST» query. We'd get the same result in formatting the query and pass it to the mysql_query() function. The mysql_list_processes() function returns a result set, we'll have to decode before displaying it. The code for destroying our dialog is in the OnOK() function which is the handler for the OK button. void CMyInfos::OnOK() this->destroywindow(); 25 / 26

26 Conclusion We're done! Our sample application is finished. To run it, all we need is the executable file and the libmysql.dll file in the same directory. Nothing else. This small program is an introduction to what can be done with the MySQL API and a programming langage. C++ is not the only langage capable of using MySQL API. The most famous is undoubtedly PHP. PHP is used to make dynamic web sites. Under Windows, there exist many free tools (on the MySQL web site 1. MyODBC: to work with databases via ODBC (Open Database Connectivity) 2. MyOleDB: OleDB provider for MySQL, to be used with tools using the Visual Basic lingo. 3. TMySQL: A Delphi component. 4. Zeos: a series of Delphi and Kylix open source components. I hope this tutorial will bring you a lot. Feel free to contact me if you find errors, or if you have any questions. Happy MySQL! Jacques Abada 26 / 26

Virtuozzo Virtualization SDK

Virtuozzo Virtualization SDK Virtuozzo Virtualization SDK Programmer's Guide February 18, 2016 Copyright 1999-2016 Parallels IP Holdings GmbH and its affiliates. All rights reserved. Parallels IP Holdings GmbH Vordergasse 59 8200

More information

Writer Guide. Chapter 15 Using Forms in Writer

Writer Guide. Chapter 15 Using Forms in Writer Writer Guide Chapter 15 Using Forms in Writer Copyright This document is Copyright 2005 2008 by its contributors as listed in the section titled Authors. You may distribute it and/or modify it under the

More information

The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code.

The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code. Content Introduction... 2 Data Access Server Control Panel... 2 Running the Sample Client Applications... 4 Sample Applications Code... 7 Server Side Objects... 8 Sample Usage of Server Side Objects...

More information

ODBC Client Driver Help. 2015 Kepware, Inc.

ODBC Client Driver Help. 2015 Kepware, Inc. 2015 Kepware, Inc. 2 Table of Contents Table of Contents 2 4 Overview 4 External Dependencies 4 Driver Setup 5 Data Source Settings 5 Data Source Setup 6 Data Source Access Methods 13 Fixed Table 14 Table

More information

Version of this tutorial: 1.06a (this tutorial will going to evolve with versions of NWNX4)

Version of this tutorial: 1.06a (this tutorial will going to evolve with versions of NWNX4) Version of this tutorial: 1.06a (this tutorial will going to evolve with versions of NWNX4) The purpose of this document is to help a beginner to install all the elements necessary to use NWNX4. Throughout

More information

IBM. Implementing SMTP and POP3 Scenarios with WebSphere Business Integration Connect. Author: Ronan Dalton

IBM. Implementing SMTP and POP3 Scenarios with WebSphere Business Integration Connect. Author: Ronan Dalton IBM Implementing SMTP and POP3 Scenarios with WebSphere Business Integration Connect Author: Ronan Dalton Table of Contents Section 1. Introduction... 2 Section 2. Download, Install and Configure ArGoSoft

More information

Knocker main application User manual

Knocker main application User manual Knocker main application User manual Author: Jaroslav Tykal Application: Knocker.exe Document Main application Page 1/18 U Content: 1 START APPLICATION... 3 1.1 CONNECTION TO DATABASE... 3 1.2 MODULE DEFINITION...

More information

Chapter 15 Using Forms in Writer

Chapter 15 Using Forms in Writer Writer Guide Chapter 15 Using Forms in Writer OpenOffice.org Copyright This document is Copyright 2005 2006 by its contributors as listed in the section titled Authors. You can distribute it and/or modify

More information

ODBC Driver Version 4 Manual

ODBC Driver Version 4 Manual ODBC Driver Version 4 Manual Revision Date 12/05/2007 HanDBase is a Registered Trademark of DDH Software, Inc. All information contained in this manual and all software applications mentioned in this manual

More information

INSTALLING, CONFIGURING, AND DEVELOPING WITH XAMPP

INSTALLING, CONFIGURING, AND DEVELOPING WITH XAMPP INSTALLING, CONFIGURING, AND DEVELOPING WITH XAMPP by Dalibor D. Dvorski, March 2007 Skills Canada Ontario DISCLAIMER: A lot of care has been taken in the accuracy of information provided in this article,

More information

Horizon Debt Collect. User s and Administrator s Guide

Horizon Debt Collect. User s and Administrator s Guide Horizon Debt Collect User s and Administrator s Guide Microsoft, Windows, Windows NT, Windows 2000, Windows XP, and SQL Server are registered trademarks of Microsoft Corporation. Sybase is a registered

More information

Create a New Database in Access 2010

Create a New Database in Access 2010 Create a New Database in Access 2010 Table of Contents OVERVIEW... 1 CREATING A DATABASE... 1 ADDING TO A DATABASE... 2 CREATE A DATABASE BY USING A TEMPLATE... 2 CREATE A DATABASE WITHOUT USING A TEMPLATE...

More information

PrivateWire Gateway Load Balancing and High Availability using Microsoft SQL Server Replication

PrivateWire Gateway Load Balancing and High Availability using Microsoft SQL Server Replication PrivateWire Gateway Load Balancing and High Availability using Microsoft SQL Server Replication Introduction The following document describes how to install PrivateWire in high availability mode using

More information

Using Microsoft SQL Server A Brief Help Sheet for CMPT 354

Using Microsoft SQL Server A Brief Help Sheet for CMPT 354 Using Microsoft SQL Server A Brief Help Sheet for CMPT 354 1. Getting Started To Logon to Windows NT: (1) Press Ctrl+Alt+Delete. (2) Input your user id (the same as your Campus Network user id) and password

More information

Writer Guide. Chapter 15 Using Forms in Writer

Writer Guide. Chapter 15 Using Forms in Writer Writer Guide Chapter 15 Using Forms in Writer Copyright This document is Copyright 2011 by its contributors as listed below. You may distribute it and/or modify it under the terms of either the GNU General

More information

Business Intelligence Tutorial

Business Intelligence Tutorial IBM DB2 Universal Database Business Intelligence Tutorial Version 7 IBM DB2 Universal Database Business Intelligence Tutorial Version 7 Before using this information and the product it supports, be sure

More information

CHAPTER 23: USING ODBC

CHAPTER 23: USING ODBC Chapter 23: Using ODBC CHAPTER 23: USING ODBC Training Objectives In this section, we introduce you to the Microsoft Business Solutions Navision NODBC driver. However, it is recommended that you read and

More information

Utilities. 2003... ComCash

Utilities. 2003... ComCash Utilities ComCash Utilities All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic, electronic, or mechanical, including photocopying, recording, taping, or

More information

Open a PDF document using Adobe Reader, then click on the Tools menu on the upper left hand corner.

Open a PDF document using Adobe Reader, then click on the Tools menu on the upper left hand corner. This document illustrates how to digitally sign PDF documents using Acrobat Reader 11. The illustrations assume that the user already has a digital certificate. You will need the latest version of Adobe

More information

Microsoft Dynamics NAV Connector. User Guide

Microsoft Dynamics NAV Connector. User Guide Microsoft Dynamics NAV Connector User Guide Microsoft Dynamics NAV Connector, version 1.0 Copyright Bottomline Technologies, Inc. 2008. All Rights Reserved Information in this document is subject to change

More information

Novell ZENworks Asset Management 7.5

Novell ZENworks Asset Management 7.5 Novell ZENworks Asset Management 7.5 w w w. n o v e l l. c o m October 2006 USING THE WEB CONSOLE Table Of Contents Getting Started with ZENworks Asset Management Web Console... 1 How to Get Started...

More information

SharePoint Wiki Redirect Installation Instruction

SharePoint Wiki Redirect Installation Instruction SharePoint Wiki Redirect Installation Instruction System Requirements: Microsoft Windows SharePoint Services v3 or Microsoft Office SharePoint Server 2007. License management: To upgrade from a trial license,

More information

IBM FileNet eforms Designer

IBM FileNet eforms Designer IBM FileNet eforms Designer Version 5.0.2 Advanced Tutorial for Desktop eforms Design GC31-5506-00 IBM FileNet eforms Designer Version 5.0.2 Advanced Tutorial for Desktop eforms Design GC31-5506-00 Note

More information

Creating Database Tables in Microsoft SQL Server

Creating Database Tables in Microsoft SQL Server Creating Database Tables in Microsoft SQL Server Microsoft SQL Server is a relational database server that stores and retrieves data for multi-user network-based applications. SQL Server databases are

More information

Installation Guide for Microsoft SQL Server 2008 R2 Express. October 2011 (GUIDE 1)

Installation Guide for Microsoft SQL Server 2008 R2 Express. October 2011 (GUIDE 1) Installation Guide for Microsoft SQL Server 2008 R2 Express October 2011 (GUIDE 1) Copyright 2011 Lucid Innovations Limited. All Rights Reserved This guide only covers the installation and configuration

More information

SharePoint AD Information Sync Installation Instruction

SharePoint AD Information Sync Installation Instruction SharePoint AD Information Sync Installation Instruction System Requirements Microsoft Windows SharePoint Services V3 or Microsoft Office SharePoint Server 2007. License management Click the trial link

More information

Learn how to create web enabled (browser) forms in InfoPath 2013 and publish them in SharePoint 2013. InfoPath 2013 Web Enabled (Browser) forms

Learn how to create web enabled (browser) forms in InfoPath 2013 and publish them in SharePoint 2013. InfoPath 2013 Web Enabled (Browser) forms Learn how to create web enabled (browser) forms in InfoPath 2013 and publish them in SharePoint 2013. InfoPath 2013 Web Enabled (Browser) forms InfoPath 2013 Web Enabled (Browser) forms Creating Web Enabled

More information

Xtreeme Search Engine Studio Help. 2007 Xtreeme

Xtreeme Search Engine Studio Help. 2007 Xtreeme Xtreeme Search Engine Studio Help 2007 Xtreeme I Search Engine Studio Help Table of Contents Part I Introduction 2 Part II Requirements 4 Part III Features 7 Part IV Quick Start Tutorials 9 1 Steps to

More information

DocuSign for SharePoint 2010 1.5.1

DocuSign for SharePoint 2010 1.5.1 Quick Start Guide DocuSign for SharePoint 2010 1.5.1 Published December 22, 2014 Overview DocuSign for SharePoint 2010 allows users to sign or send documents out for signature from a SharePoint library.

More information

Setting Up ALERE with Client/Server Data

Setting Up ALERE with Client/Server Data Setting Up ALERE with Client/Server Data TIW Technology, Inc. November 2014 ALERE is a registered trademark of TIW Technology, Inc. The following are registered trademarks or trademarks: FoxPro, SQL Server,

More information

INFORMIX - Data Director for Visual Basic. Version 3.5

INFORMIX - Data Director for Visual Basic. Version 3.5 INFORMIX - Data Director for Visual Basic Version 3.5 Installing and Configuring Data Director This document explains how to install INFORMIX-Data Director for Visual Basic, Version 3.5, in your Microsoft

More information

Business Intelligence Tutorial: Introduction to the Data Warehouse Center

Business Intelligence Tutorial: Introduction to the Data Warehouse Center IBM DB2 Universal Database Business Intelligence Tutorial: Introduction to the Data Warehouse Center Version 8 IBM DB2 Universal Database Business Intelligence Tutorial: Introduction to the Data Warehouse

More information

User Guide. Version 3.2. Copyright 2002-2009 Snow Software AB. All rights reserved.

User Guide. Version 3.2. Copyright 2002-2009 Snow Software AB. All rights reserved. Version 3.2 User Guide Copyright 2002-2009 Snow Software AB. All rights reserved. This manual and computer program is protected by copyright law and international treaties. Unauthorized reproduction or

More information

Release Notes LS Retail Data Director 3.01.04 August 2011

Release Notes LS Retail Data Director 3.01.04 August 2011 Release Notes LS Retail Data Director 3.01.04 August 2011 Copyright 2010-2011, LS Retail. All rights reserved. All trademarks belong to their respective holders. Contents 1 Introduction... 1 1.1 What s

More information

Installing LearningBay Enterprise Part 2

Installing LearningBay Enterprise Part 2 Installing LearningBay Enterprise Part 2 Support Document Copyright 2012 Axiom. All Rights Reserved. Page 1 Please note that this document is one of three that details the process for installing LearningBay

More information

Sample Table. Columns. Column 1 Column 2 Column 3 Row 1 Cell 1 Cell 2 Cell 3 Row 2 Cell 4 Cell 5 Cell 6 Row 3 Cell 7 Cell 8 Cell 9.

Sample Table. Columns. Column 1 Column 2 Column 3 Row 1 Cell 1 Cell 2 Cell 3 Row 2 Cell 4 Cell 5 Cell 6 Row 3 Cell 7 Cell 8 Cell 9. Working with Tables in Microsoft Word The purpose of this document is to lead you through the steps of creating, editing and deleting tables and parts of tables. This document follows a tutorial format

More information

Visual Basic Programming. An Introduction

Visual Basic Programming. An Introduction Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides

More information

MS Active Sync: Sync with External Memory Files

MS Active Sync: Sync with External Memory Files Mindfire Solutions - 1 - MS Active Sync: Sync with External Memory Files Author: Rahul Gaur Mindfire Solutions, Mindfire Solutions - 2 - Table of Contents Overview 3 Target Audience 3 Conventions...3 1.

More information

Creating Forms with Acrobat 10

Creating Forms with Acrobat 10 Creating Forms with Acrobat 10 Copyright 2013, Software Application Training, West Chester University. A member of the Pennsylvania State Systems of Higher Education. No portion of this document may be

More information

ArcMail Technology Defender Mail Server Configuration Guide for Microsoft Exchange Server 2003 / 2000

ArcMail Technology Defender Mail Server Configuration Guide for Microsoft Exchange Server 2003 / 2000 ArcMail Technology Defender Mail Server Configuration Guide for Microsoft Exchange Server 2003 / 2000 Version 3.2 ArcMail Technology 401 Edwards Street, Suite 1601 Shreveport, LA 71101 Support: (888) 790-9252

More information

PDF Web Form. Projects 1

PDF Web Form. Projects 1 Projects 1 In this project, you ll create a PDF form that can be used to collect user data online. In this exercise, you ll learn how to: Design a layout for a functional form. Add form fields and set

More information

EventTracker: Support to Non English Systems

EventTracker: Support to Non English Systems EventTracker: Support to Non English Systems Publication Date: April 25, 2012 EventTracker 8815 Centre Park Drive Columbia MD 21045 www.eventtracker.com Introduction This document has been prepared to

More information

Integration with Active Directory

Integration with Active Directory VMWARE TECHNICAL NOTE VMware ACE Integration with Active Directory This document explains how to set up Active Directory to use with VMware ACE. This document contains the following topics: About Active

More information

Orientation Course - Lab Manual

Orientation Course - Lab Manual Orientation Course - Lab Manual Using the Virtual Managed Workplace site for the lab exercises Your instructor will provide the following information before the first lab exercise begins: Your numerical

More information

Team Foundation Server 2012 Installation Guide

Team Foundation Server 2012 Installation Guide Team Foundation Server 2012 Installation Guide Page 1 of 143 Team Foundation Server 2012 Installation Guide Benjamin Day benday@benday.com v1.0.0 November 15, 2012 Team Foundation Server 2012 Installation

More information

C&A AR Online Credit Card Processor Installation and Setup Instructions with Process Flow

C&A AR Online Credit Card Processor Installation and Setup Instructions with Process Flow 4820 8 th Ave SE, Salem OR 97302 4820 8 TH AVE. SE SALEM, OREGON 97302 C&A AR Online Credit Card Processor Installation and Setup Instructions with Process Flow The general purpose of this program is to

More information

6. If you want to enter specific formats, click the Format Tab to auto format the information that is entered into the field.

6. If you want to enter specific formats, click the Format Tab to auto format the information that is entered into the field. Adobe Acrobat Professional X Part 3 - Creating Fillable Forms Preparing the Form Create the form in Word, including underlines, images and any other text you would like showing on the form. Convert the

More information

DiskPulse DISK CHANGE MONITOR

DiskPulse DISK CHANGE MONITOR DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com info@flexense.com 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product

More information

Word 2010: Mail Merge to Email with Attachments

Word 2010: Mail Merge to Email with Attachments Word 2010: Mail Merge to Email with Attachments Table of Contents TO SEE THE SECTION FOR MACROS, YOU MUST TURN ON THE DEVELOPER TAB:... 2 SET REFERENCE IN VISUAL BASIC:... 2 CREATE THE MACRO TO USE WITHIN

More information

Note: With v3.2, the DocuSign Fetch application was renamed DocuSign Retrieve.

Note: With v3.2, the DocuSign Fetch application was renamed DocuSign Retrieve. Quick Start Guide DocuSign Retrieve 3.2.2 Published April 2015 Overview DocuSign Retrieve is a windows-based tool that "retrieves" envelopes, documents, and data from DocuSign for use in external systems.

More information

Data Tool Platform SQL Development Tools

Data Tool Platform SQL Development Tools Data Tool Platform SQL Development Tools ekapner Contents Setting SQL Development Preferences...5 Execution Plan View Options Preferences...5 General Preferences...5 Label Decorations Preferences...6

More information

Tutorial Reference Manual. Java WireFusion 4.1

Tutorial Reference Manual. Java WireFusion 4.1 Tutorial Reference Manual Java WireFusion 4.1 Contents INTRODUCTION...1 About this Manual...2 REQUIREMENTS...3 User Requirements...3 System Requirements...3 SHORTCUTS...4 DEVELOPMENT ENVIRONMENT...5 Menu

More information

Release Bulletin Sybase ETL Small Business Edition 4.2

Release Bulletin Sybase ETL Small Business Edition 4.2 Release Bulletin Sybase ETL Small Business Edition 4.2 Document ID: DC00737-01-0420-02 Last revised: November 16, 2007 Topic Page 1. Accessing current release bulletin information 2 2. Product summary

More information

National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide

National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide NFIRS 5.0 Software Version 5.3 Prepared for: Directorate of Preparedness and Response (FEMA) Prepared by:

More information

DOCUMENTATION MySQL BACKUP & RESTORE OPERATIONS

DOCUMENTATION MySQL BACKUP & RESTORE OPERATIONS DOCUMENTATION Copyright Notice The use and copying of this product is subject to a license agreement. Any other use is prohibited. No part of this publication may be reproduced, transmitted, transcribed,

More information

Adobe Acrobat 9 Pro Accessibility Guide: Creating Accessible Forms

Adobe Acrobat 9 Pro Accessibility Guide: Creating Accessible Forms Adobe Acrobat 9 Pro Accessibility Guide: Creating Accessible Forms Adobe, the Adobe logo, Acrobat, Acrobat Connect, the Adobe PDF logo, Creative Suite, LiveCycle, and Reader are either registered trademarks

More information

Office of History. Using Code ZH Document Management System

Office of History. Using Code ZH Document Management System Office of History Document Management System Using Code ZH Document The ZH Document (ZH DMS) uses a set of integrated tools to satisfy the requirements for managing its archive of electronic documents.

More information

SQLBase. Starter Guide 20-2905-1004

SQLBase. Starter Guide 20-2905-1004 SQLBase Starter Guide 20-2905-1004 Trademarks Centura, Centura net.db, Centura Ranger, the Centura logo, Centura Web Developer, Gupta, the Gupta logo, Gupta Powered, the Gupta Powered logo, Fast Facts,

More information

RTI Database Integration Service. Getting Started Guide

RTI Database Integration Service. Getting Started Guide RTI Database Integration Service Getting Started Guide Version 5.2.0 2015 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. June 2015. Trademarks Real-Time Innovations,

More information

Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences. Mike Dempsey

Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences. Mike Dempsey Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences by Mike Dempsey Overview SQL Assistant 13.0 is an entirely new application that has been re-designed from the ground up. It has been

More information

MadCap Software. Upgrading Guide. Pulse

MadCap Software. Upgrading Guide. Pulse MadCap Software Upgrading Guide Pulse Copyright 2014 MadCap Software. All rights reserved. Information in this document is subject to change without notice. The software described in this document is furnished

More information

How to develop your own app

How to develop your own app How to develop your own app It s important that everything on the hardware side and also on the software side of our Android-to-serial converter should be as simple as possible. We have the advantage that

More information

Call Recorder Oygo Manual. Version 1.001.11

Call Recorder Oygo Manual. Version 1.001.11 Call Recorder Oygo Manual Version 1.001.11 Contents 1 Introduction...4 2 Getting started...5 2.1 Hardware installation...5 2.2 Software installation...6 2.2.1 Software configuration... 7 3 Options menu...8

More information

AccXES Client Tools 10.0 User Guide 701P41529 May 2004

AccXES Client Tools 10.0 User Guide 701P41529 May 2004 AccXES Client Tools 10.0 User Guide 701P41529 May 2004 Trademark Acknowledgments XEROX, AccXES, The Document Company, and the identifying product names and numbers herein are trademarks of XEROX CORPORATION.

More information

Tivoli Access Manager Agent for Windows Installation Guide

Tivoli Access Manager Agent for Windows Installation Guide IBM Tivoli Identity Manager Tivoli Access Manager Agent for Windows Installation Guide Version 4.5.0 SC32-1165-03 IBM Tivoli Identity Manager Tivoli Access Manager Agent for Windows Installation Guide

More information

IceWarp to IceWarp Server Migration

IceWarp to IceWarp Server Migration IceWarp to IceWarp Server Migration Registered Trademarks iphone, ipad, Mac, OS X are trademarks of Apple Inc., registered in the U.S. and other countries. Microsoft, Windows, Outlook and Windows Phone

More information

Microsoft Access 2010 handout

Microsoft Access 2010 handout Microsoft Access 2010 handout Access 2010 is a relational database program you can use to create and manage large quantities of data. You can use Access to manage anything from a home inventory to a giant

More information

Part II Acrobat 8 Professional

Part II Acrobat 8 Professional Part II Acrobat 8 Professional Exporting Images There will be times when images will need to be exported out of a PDF document and saved as a file type in which it can be used in a different application.

More information

Expedite for Windows Software Development Kit Programming Guide

Expedite for Windows Software Development Kit Programming Guide GXS EDI Services Expedite for Windows Software Development Kit Programming Guide Version 6 Release 2 GC34-3285-02 Fifth Edition (November 2005) This edition replaces the Version 6.1 edition. Copyright

More information

for Networks Installation Guide for the application on a server September 2015 (GUIDE 2) Memory Booster version 1.3-N and later

for Networks Installation Guide for the application on a server September 2015 (GUIDE 2) Memory Booster version 1.3-N and later for Networks Installation Guide for the application on a server September 2015 (GUIDE 2) Memory Booster version 1.3-N and later Copyright 2015, Lucid Innovations Limited. All Rights Reserved Lucid Research

More information

A Brief Introduction to MySQL

A Brief Introduction to MySQL A Brief Introduction to MySQL by Derek Schuurman Introduction to Databases A database is a structured collection of logically related data. One common type of database is the relational database, a term

More information

Security Assertion Markup Language (SAML) Site Manager Setup

Security Assertion Markup Language (SAML) Site Manager Setup Security Assertion Markup Language (SAML) Site Manager Setup Trademark Notice Blackboard, the Blackboard logos, and the unique trade dress of Blackboard are the trademarks, service marks, trade dress and

More information

Contents. Introduction. Chapter 1 Some Hot Tips to Get You Started. Chapter 2 Tips on Working with Strings and Arrays..

Contents. Introduction. Chapter 1 Some Hot Tips to Get You Started. Chapter 2 Tips on Working with Strings and Arrays.. Contents Introduction How to Use This Book How to Use the Tips in This Book Code Naming Conventions Getting the Example Source Code Getting Updates to the Example Code Contacting the Author Chapter 1 Some

More information

Creating a Java application using Perfect Developer and the Java Develo...

Creating a Java application using Perfect Developer and the Java Develo... 1 of 10 15/02/2010 17:41 Creating a Java application using Perfect Developer and the Java Development Kit Introduction Perfect Developer has the facility to execute pre- and post-build steps whenever the

More information

INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3

INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3 INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3 Often the most compelling way to introduce yourself to a software product is to try deliver value as soon as possible. Simego DS3 is designed to get you

More information

Remote Management System

Remote Management System RMS Copyright and Distribution Notice November 2009 Copyright 2009 ARTROMICK International, Inc. ALL RIGHTS RESERVED. Published 2009. Printed in the United States of America WARNING: ANY UNAUTHORIZED

More information

Using ODBC with MDaemon 6.5

Using ODBC with MDaemon 6.5 Using ODBC with MDaemon 6.5 Alt-N Technologies, Ltd 1179 Corporate Drive West, #103 Arlington, TX 76006 Tel: (817) 652-0204 2002 Alt-N Technologies. All rights reserved. Other product and company names

More information

Acrobat X Pro Accessible Forms and Interactive Documents

Acrobat X Pro Accessible Forms and Interactive Documents Contents 2 PDF Form Fields 2 Acrobat Form Wizard 5 Enter Forms Editing Mode Directly 5 Create Form Fields Manually 6 Forms Editing Mode 8 Form Field Properties 11 Editing or Modifying an Existing Form

More information

Facebook Twitter YouTube Google Plus Website Email

Facebook Twitter YouTube Google Plus Website Email PHP MySQL COURSE WITH OOP COURSE COVERS: PHP MySQL OBJECT ORIENTED PROGRAMMING WITH PHP SYLLABUS PHP 1. Writing PHP scripts- Writing PHP scripts, learn about PHP code structure, how to write and execute

More information

ORACLE BUSINESS INTELLIGENCE WORKSHOP

ORACLE BUSINESS INTELLIGENCE WORKSHOP ORACLE BUSINESS INTELLIGENCE WORKSHOP Integration of Oracle BI Publisher with Oracle Business Intelligence Enterprise Edition Purpose This tutorial mainly covers how Oracle BI Publisher is integrated with

More information

TestDirector. Microsoft Visual SourceSafe Version Control Add-in Guide Version 8.0

TestDirector. Microsoft Visual SourceSafe Version Control Add-in Guide Version 8.0 TestDirector Microsoft Visual SourceSafe Version Control Add-in Guide Version 8.0 TestDirector Microsoft Visual SourceSafe Version Control Add-in Guide, Version 8.0 This manual, and the accompanying software

More information

Documentum Desktop Client on Windows 2000 Terminal Services

Documentum Desktop Client on Windows 2000 Terminal Services Documentum Desktop Client on Windows 2000 Terminal Services Docbase Version 1.0 May 10, 2001 Documentum Desktop Client on Windows Terminal Services Page 2 Revision History Docbase Version Revised Date

More information

Outlook Express POP Instructions - Bloomsburg University Students

Outlook Express POP Instructions - Bloomsburg University Students 1. Open Outlook Express by clicking Start, All Programs, and Outlook Express. 2. Click on the Tools menu and click Accounts. 1 3. Click on Add Mail 4. Enter your name and click Next. 2 5. Enter your full

More information

Creating a Database in Access

Creating a Database in Access Creating a Database in Access Microsoft Access is a database application. A database is collection of records and files organized for a particular purpose. For example, you could use a database to store

More information

Using Crystal Reports with VFP

Using Crystal Reports with VFP Using Crystal Reports with VFP Introduction to Crystal Reports One of the most important aspects of Visual FoxPro applications is reporting. Whether we provide canned reports or allow the user to design

More information

Suite. How to Use GrandMaster Suite. Exporting with ODBC

Suite. How to Use GrandMaster Suite. Exporting with ODBC Suite How to Use GrandMaster Suite Exporting with ODBC This page intentionally left blank ODBC Export 3 Table of Contents: HOW TO USE GRANDMASTER SUITE - EXPORTING WITH ODBC...4 OVERVIEW...4 WHAT IS ODBC?...

More information

Getting Started Guide

Getting Started Guide Getting Started Guide Mulberry IMAP Internet Mail Client Versions 3.0 & 3.1 Cyrusoft International, Inc. Suite 780 The Design Center 5001 Baum Blvd. Pittsburgh PA 15213 USA Tel: +1 412 605 0499 Fax: +1

More information

Advanced Event Viewer Manual

Advanced Event Viewer Manual Advanced Event Viewer Manual Document version: 2.2944.01 Download Advanced Event Viewer at: http://www.advancedeventviewer.com Page 1 Introduction Advanced Event Viewer is an award winning application

More information

PHP Tutorial From beginner to master

PHP Tutorial From beginner to master PHP Tutorial From beginner to master PHP is a powerful tool for making dynamic and interactive Web pages. PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP.

More information

Call Recorder Quick CD Access System

Call Recorder Quick CD Access System Call Recorder Quick CD Access System V4.0 VC2010 Contents 1 Call Recorder Quick CD Access System... 3 1.1 Install the software...4 1.2 Start...4 1.3 View recordings on CD...5 1.4 Create an archive on Hard

More information

Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide

Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide Windows 2000, Windows Server 2003 5.0 11293743 Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide Copyright

More information

Nortel Networks Symposium Call Center Server Symposium Database Integration User s Guide

Nortel Networks Symposium Call Center Server Symposium Database Integration User s Guide 297-2183-911 Nortel Networks Symposium Call Center Server Symposium Database Integration User s Guide Product release 5.0 Standard 1.0 April 2004 Nortel Networks Symposium Call Center Server Symposium

More information

Building a Python Plugin

Building a Python Plugin Building a Python Plugin QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi This work is licensed under a Creative Commons Attribution 4.0 International License. Building a Python

More information

National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide

National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide NFIRS 5.0 Software Version 5.6 1/7/2009 Department of Homeland Security Federal Emergency Management Agency

More information

Resources You can find more resources for Sync & Save at our support site: http://www.doforms.com/support.

Resources You can find more resources for Sync & Save at our support site: http://www.doforms.com/support. Sync & Save Introduction Sync & Save allows you to connect the DoForms service (www.doforms.com) with your accounting or management software. If your system can import a comma delimited, tab delimited

More information

Expat Tracker. User Manual. 2010 HR Systems Limited

Expat Tracker. User Manual. 2010 HR Systems Limited Expat Tracker User Manual Expat Tracker Assignee Management Software HR Systems Limited Expat Tracker All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic,

More information

Access Queries (Office 2003)

Access Queries (Office 2003) Access Queries (Office 2003) Technical Support Services Office of Information Technology, West Virginia University OIT Help Desk 293-4444 x 1 oit.wvu.edu/support/training/classmat/db/ Instructor: Kathy

More information

Configuration Guide. Remote Backups How-To Guide. Overview

Configuration Guide. Remote Backups How-To Guide. Overview Configuration Guide Remote Backups How-To Guide Overview Remote Backups allow you to back-up your data from 1) a ShareCenter TM to either a Remote ShareCenter or Linux Server and 2) Remote ShareCenter

More information

Producing Listings and Reports Using SAS and Crystal Reports Krishna (Balakrishna) Dandamudi, PharmaNet - SPS, Kennett Square, PA

Producing Listings and Reports Using SAS and Crystal Reports Krishna (Balakrishna) Dandamudi, PharmaNet - SPS, Kennett Square, PA Producing Listings and Reports Using SAS and Crystal Reports Krishna (Balakrishna) Dandamudi, PharmaNet - SPS, Kennett Square, PA ABSTRACT The SAS Institute has a long history of commitment to openness

More information