Recital

Login Register

In this article Barry Mavin, CEO and Chief Software Architect for Recital, details how to use the Client Drivers provided with the Recital Database Server to work with local or remote server-side OLE DB data sources.

Overview

The Recital Universal .NET Data Provider provides connectivity to the Recital Database Server running on any supported platform (Windows, Linux, Unix, OpenVMS) using the RecitalConnection object.

The Recital Universal JDBC Driver provides the same functionality for java applications.

The Recital Universal ODBC Driver provides the same functionality for applications that use ODBC.

Each of the above Client Drivers use a connection string to describe connections parameters.

The basic format of a connection string consists of a series of keyword/value pairs separated by semicolons. The equal sign (=) connects each keyword and its value.

The following table lists the valid names for keyword/values.


Name Default Description

Data Source
-or-
Server
-or-
Nodename

 

  The name or network address of the instance of the Recital Database Server which to connect to.
Directory   The target directory on the remote server where data to be accessed resides. This is ignored when a Database is specified.

Encrypt
-or-
Encryption

false When true, DES3 encryption is used for all data sent between the client and server.
Initial Catalog
-or-
Database
  The name of the database on the remote server.
Password
-or-
Pwd
  The password used to authenticate access to the remote server.
User ID   The user name used to authenticate access to the remote server.

Connection Pooling
-or-
Pool

false Enable connection pooling to the server. This provides for one connection to be shared.
Logging false Provides for the ability to log all server requests for debugging purposes
Rowid true When Rowid is true (the default) a column will be post-fixed to each SELECT query that is a unique row identifier. This is used to provide optimised UPDATE and DELETE operations. If you use the RecitalSqlGrid, RecitalSqlForm, or RecitalSqlGridForm components then this column is not visible but is used to handle updates to the underlying data source.
Logfile   The name of the logfile for logging
Gateway  

Opens an SQL gateway(Connection) to a foreign SQL data source on the remote server.

Using Gateways, you can transparently access the following local or remote data sources:

  • Recital
  • Oracle
  • ODBC (Server-side ODBC data sources)
  • JDBC (Server-side JDBC data sources)
  • ADO (Use this to connect to SQL Server and other Native Windows OLEDB data sources)
  • MySQL
  • PostgreSQL

The gateway can be specified in several formats:

servertype@nodename:username/password-database

e.g.

oracle@nodename:username/password-database

mysql@nodename:username/password-database

postgresql@nodename:username/password-database

-or-

odbc:odbc_data_source_name_on_server

oledb:oledb_connection_string_on_server

jdbc:jdbc_driver_path_on_server;jdbc:Recital:args


To connect to a server-side OLE DB data source, you use the gateway=value key/value pair in the following way.

gateway=oledb:oledb_connection_string_on_server

Important
When specifying the connection string be sure to quote the gateway= with "...".

You can find examples of connection strings for most ODBC and OLE DB data sources by clicking here.

Example in C# using the Recital Universal .NET Data Provider:
////////////////////////////////////////////////////////////////////////
// include the references below
using System.Data;
using Recital.Data;
 
////////////////////////////////////////////////////////////////////////
// The following code example creates an instance of a DataAdapter that 
// uses a Connection to the Recital Database Server, and a gateway to
// the SQL server Northwind database. It then populates a DataTable 
// in a DataSet with the list of customers. The SQL statement and 
// Connection arguments passed to the DataAdapter constructor are used 
// to create the SelectCommand property of the DataAdapter.
public DataSet SelectCustomers()
{
	string gateway = "oledb:Provider=sqloledb;Initial Catalog=Northwind;
		Data Source=localhost;Integrated Security=SSPI";
	RecitalConnection swindConn = new 
		RecitalConnection("Data Source=localhost;gateway=\""+gateway+"\");
	RecitalCommand selectCMD = new 
		RecitalCommand("SELECT CustomerID, CompanyName FROM Customers", swindConn);
	selectCMD.CommandTimeout = 30;
	RecitalDataAdapter custDA = new RecitalDataAdapter();
	custDA.SelectCommand = selectCMD;
	swindConn.Open();
	DataSet custDS = new DataSet();
	custDA.Fill(custDS, "Customers");
	swindConn.Close();
	return custDS;
}
Example in Java using the Recital Universal JDBC Driver:
////////////////////////////////////////////////////////////////////////
// standard imports required by the JDBC driver
import java.sql.*;
import java.io.*;
import java.net.URL;
import java.math.BigDecimal;
import Recital.sql.*;
 
////////////////////////////////////////////////////////////////////////
// The following code example creates a Connection to the Recital 
// Database Server, and a gateway to the SQL server Northwind database. 
// It then retrieves all the customers.
public void SelectCustomers()
{
    // setup the Connection URL for JDBC
	String gateway = "oledb:Provider=sqloledb;Initial Catalog=Northwind;
		Data Source=localhost;Integrated Security=SSPI";
	String url = "jdbc:Recital:Data Source=localhost;gateway=\""+gateway+"\";
	// load the Recital Universal JDBC Driver
	new RecitalDriver();
 
	// create the connection
	Connection con = DriverManager.getConnection(url);
	// create the statement
	Statement stmt = con.createStatement();
	// perform the SQL query
	ResultSet rs = stmt.executeQuery("SELECT CustomerID, CompanyName FROM Customers");
	// fetch the data
	while (rs.next()) 
	{
		String CompanyID = rs.getString("CustomerID");
		String CompanyName = rs.getString("CompanyName");
		// do something with the data...
	}
    
	// Release the statement
	stmt.close();
	
	// Disconnect from the server
	con.close();
}
Published in Blogs
Read more...
In Recital 10, you can declare anonymous classes and call anonymous methods in these classes.
// declare some simple procedures 
proc display(cArg)
    echo "display=" + cArg
endproc

proc show(cArg)
    echo "show=" + cArg
endproc

// create an object based on an anonymous class
myobj = new object()

// add some properties
myobj["name"] = "barry"
myobj["company"] = "recital"

// now declare an anonymous method
myobj["mymethod"] = display

// call the method
myobj.mymethod("hello world")    // displays "display=hello world"

// redeclare the method
myobj["mymethod"] = show

// call the method
myobj.mymethod("hello world")    // displays "show=hello world"
Where this becomes particularly useful is when you have a procedure that calls anonymous methods in order to process data. This technique can be used to call anonymous procedures in your code.
proc processdata(oArg)
    oArg.mymethod(oArg.name)    
endproc

proc show(cArg)
    echo "show=" + cArg
endproc

myobj = new object()
myobj["name"] = "barry"
myobj["mymethod"] = show
processdata(myobj)        // displays "show=barry"
Published in Blogs
Read more...


I am pleased to finally report that the Centos release of Redhats 5.3 has been built and is available for download from http://www.centos.org/

The highlights of this release can be found at the following URL: http://www.redhat.com

The main areas of interest in my opinion excluding critical secirty fixes are:

  • Updated hardwaresupport support for the new Intel Core i7 (Nehalem) chips
  • Beefed up virtualiseation support increasing CPU and Ram limits of Virtual machines.
  • Inclusion of the fully open sourced OpenJDK. This makes Red Hat Enterprise Linux 5.3 the first enterprise-ready solution with a fully open source Java stack when combined with JBoss Enterprise Application Platform.


For those who already have Centos 5.2 installed you can simply receive the update via Yum.

Before you do the following, check that  you do not have 3rd party repo's and the Centos-testing repo enabled.

You can display the currently enabled repo's using the following command.

$ yum repolist



Then as root at the prompt type:

$ yum update

 

Published in Blogs
Read more...

I am a fan of the previous incarnation of the PlugComputer so I was excited to see that Marvell have unveiled a new PlugComputer dubbed imaginatively "PlugComputer 3.0."

PlugComputer 3.0 Features:

Smaller sleeker design,
More powerful CPU - 2gz Armanda 300 CPU,
120GB 1.8-inch SATA hard drive,
Wifi,
Bluetooth,
10/100/1000 wired Ethernet,
USB 2.0
.
512MB of RAM
512MB of Flash memory


I for one would like to see an additional Ethernet port added to increase application flexibility, for some applications where you are using clustered plugs or even for routing, having multiple Ethernet ports is a must.

Even without multiple ethernet ports, these low power consumption devices really could have a place in SME environments, replacing large cumbersome legacy hardware with compact Linux plug servers.

More information about the PlugComputer can be found here
Published in Blogs
Read more...
Awk is an powerful text processing language that allows you to manipulate files containing columns of data and strings. Awk is extremely useful, both for general operation of Unix commands, and for data transformation.
 
Introduced in Recital 10 is the PIPETOSTR() function (as well as backticks `` inside strings) which can be used  in conjunction with awk to transform recital data.
 
The following links provide good tutorials on awk:
Published in Blogs
Read more...

sernet.de maintain the latest Samba releases in a yum repository, allowing for an easy and painless install or upgrade of Samba on your yum based Linux distribution.

To install the latest available Samba execute the following commands at the shell:

# cd /etc/yum.repos.d
# wget http://ftp.sernet.de/pub/samba/experimental/centos/5/sernet-samba.repo
# yum install samba

To upgrade an existing Samba install:

# cd /etc/yum.repos.d
# wget http://ftp.sernet.de/pub/samba/experimental/centos/5/sernet-samba.repo
## Note: edit sernet-samba.repo and add the line "gpgcheck=false" otherwise 
## it will not install as it is not signed
# yum update samba

Note: These steps will install the very latest build available at sernet.de.
If you require a less bleeding edge version of Samba, use the "tested" repo. This can be found at the following URL: http://ftp.sernet.de/pub/samba/tested/rhel/5

Published in Blogs
Read more...
The Komodo Editor is a free project based editor that runs on the mac, linux and windows. It color codes and handles auto completion for lots of languages (including Recital/PHP/Perl/C etc). You can download it free from here.
Published in Blogs
Read more...
Recital Web: cookies, sessions, 64-bit Apache module: documentation update:

Recital Web Getting Started
Published in Blogs
Read more...
In an interesting article at Linux Magazine, Sam Ockman discusses the origin of the term "Open Source". Check it out here.
Published in Blogs
Read more...
Recital 10 introduced the ECHO command. This command operates in the same way as the PHP ECHO command. It does not append a newline to the output but rather operates in the same way as the existing ?? command in Recital. The string being output can contain C-style string escapes \n \t or \r (newline, tab and carriage return respectively) e.g.
echo "Hello world\n"
Published in Blogs
Read more...

Copyright © 2025 Recital Software Inc.

Login

Register

User Registration
or Cancel