DATABASE ACCESS |
Top Previous Next |
UnForm supports access to databases from rule set code, using one of two techniques.
Windows Support Server Access One technique users the Windows Support Server to access data sources available on the machine where the support server runs. The Windows Support Server configuration window enables database connections to be configured and given a name, and two code block functions: dbconnect() and dbexecute() are provided to communicate with the named connection to return the results of a query. The syntax of these two functions is:
[success=]dbconnect(name$[,timeout[,errmsg$]]) [success=]dbexecute(name$, command$, timeout, fdelim$, rdelim$, response$ [,errmsg$])
Both functions return 1 if successful, 0 it not. This technique was available in starting with UnForm 7.0.
Server-based Access The second technique, added in UnForm 9.0, supports access to database sources directly within the UnForm server. When using this method, you connect to a data source identified with a string construction, optionally supplying a user and password login, as well as other optional arguments. The sqlconnect() function provides the functionality, and returns a connection channel number.
Note that secure passwords can be configured in the browser interface and referenced in the sqlconnect() function, using the syntax "store:ID" rather than a plain text password.
After connecting, send SQL commands to the database channel using the sqlexecute() function. Access the data returned by the command, if any, using the sqlfetch() function, which can return one, many, or all rows from the query, in a delimited string.
When done with the data source, you can close the channel with the close(chan) command.
The syntax of the three functions is:
chan=sqlconnect(datasource$[,user$ ,pswd$ [,otheroptions$ [,errmsg$]]]) [success=]sqlexecute(chan,command$[,errmsg$[,result$[,fdelim$[,rdelim$]]]]) count=sqlfetch(chan,result$[,count [,errmsg$ [,fdelim$ [,rdelim$]]]])
There are four types of databases supported, though not all types are supported on all platforms. The "uf90c -v" command shows which database types are supported. The four types are ODBC, Oracle, DB2, and MySQL. Note that ODBC is supported on Unix/Linux, as well as Windows, if either the unixODBC or iODBC package is installed.
The syntax of the datasource$ argument identifies the database type and data source:
Most databases require a login and password in order to access a database. The user and password must be supplied in those cases.
Additional options that can be supplied in the otheroptions$ argument, as a semicolon-delimited list. Options include:
Once a connection channel has been created, you can then send SQL commands to the channel using the sqlexecute() function. That function can optionally fill a results variable with all the rows returned by the query, or you can use the sqlfetch() function to return rows one or many at a time.
Below is a simple example showing how to use the three functions:
prejob{ chan=sqlconnect("odbc:sampdb","userid","password") if chan>0 then: e=sqlexecute(chan,"select member_id, last_name, first_name from member") if e>0 then: while sqlfetch(chan,row$) row$=sub(row$,$09$,"|") allrows$+=row$+$0a$ wend end if close(chan) end if }
text 10,2,{allrows$} |