The open method procedure of the connection object type is used to open a connection to a database engine.
For example, the simple program below illustrates how to call the open method. NOTE: The actual connection strings, you will use in your own programs will probably differ from the one used in the program below.
program Connect;
var
conn : connection;
begin
new(conn); //Create instance of connection object before using it
if supported(feature_odbc) then
conn.open('ODBC;DSN=test;user=sa;password=')
else if supported(feature_mysql) then
conn.open('MYSQL;user="sa";password="";socket="/tmp/mysql.soc"')
//
//Add code here to process database
//
conn.close;
dispose(conn); //Destroy instance of connection object when finished
end.
The only parameter to this procedure is the connection string, which is an expression of type string.
NOTE: Before an attempt is made to actually open a connection, the connection string is processed to determine what kind of connection to open and what are the parameters to use for the connection. The connection string is processes as follows:
The connection string must be prefixed by a connection type specifier, which is separated from the actual connection string by a semi-colon (;).
First the connection type specifier is separated from the connection string. Next the connection type specifier is compared with ODBC, in such a way that case is not significant, and if there is a match then an ODBC connection is to be opened. Since case is not significant in this comparision the connection type specifier could be lowercase (as in odbc), uppercase (as in ODBC), or mixed case. If the connection type specifier does not match ODBC, then it is compared with MYSQL, again in such a way that case is NOT significant. If the connection type specifier matches MYSQL then a MySQL connection is to be opened. It is an error if the connection string is not prefixed by a connection type specifier or if the connection type specifier does not match either ODBC or MYSQL.
Next if an ODBC connection is to be opened then the connection string must be in one of the following two forms:
odbc-connection-string =
odbc-connection-string-1 |
odbc-connection-string-2 |
odbc-connection-string-1 =
dsn-parm ; uid-parm ; pwd-parm [ ; [ driver-specific-text ] ]
dsn-parm = DSN = name
uid-parm = UID = uid
pwd-parm = PWD = [ password ]
odbc-connection-string-2 = name ; [uid] ; [ password ]
where [] indicate optional parameters.
For example DSN=test;UID=sa;PWD=
When the connection string is in the first form then it is passed, without further processing, to the ODBC API function SQLDriverConnect to open the connection.
When the connection string is in the second form then the name, id, and password parameters are extracted from the connection string, if present, and passed to the ODBC API function SQLConnect to open the connection. NOTE: The first form of the connection string is the recommended form, support for the second form is provided for completeness only.
If a MySQL connection is to be opened then the connection string must be in the following form:
mysql-connection-string = mysql-parameter-list
mysql-parameter-list = mysql-parameter ; mysql-parameter-list | empty
mysql-parameter =
mysql-host-parameter |
mysql-user-parameter |
mysql-password-parameter |
mysql-database-parameter |
mysql-port-parameter |
mysql-socket-parameter |
mysql-compress-parameter
mysql-host-parameter = host = " host-name "
mysql-user-parameter = user = " user-name "
mysql-password-parameter = password = " password "
mysql-database-parameter = database = " database-name "
mysql-port-parameter = port = port-number
mysql-socket-parameter = socket = " socket "
mysql-compress-parameter = compress = boolean-value
boolean-value = yes | no | true | false
For example user="testuser";database="testdb";socket="/tmp/mysql.soc";
The connection parameters are extracted from the connection string and passed to the MySQL C API function mysql_real_connect to open the connection.
The effect of each of the parameters is described below:
Operating Systems: All
Standard Pascal: No