Accuracer: The First And Only BDE Alternative
Client-Server Single-File Embedded Database for Delphi / C++Builder / Kylix
Accuracer supports both Client-Server and File-Server (Multi-User) technologies.
When you use File-Server mode the database is specified by the DatabaseFileName property of TACRDatabase component (LocalDatabase property should be set to true). In this case each client application reads and writes to the database file directly, using OS locks for synchronization.
When you use Client-Server mode the database is specified by ConnectionParams property of TACRDatabase component (LocalDatabase property should be set to false). Client application sends requests to the database server via network using UDP-based protocol. Server application executes client requests and sends replies to them, accessing database files either exclusively (if OpenDatabasesInExclusiveMode is set to true) or as a File-Server.
How To Use
1) Using a database server.
You can use the Accuracer Database Server as a Windows NT / XP service as well as Windows application.
To install server as a service you should run it with /install option:
After that you can start and stop it as a service.
To unistall service run the server with /unistall option:
Also you can run it as typical Windows application:
In this case you can use a popup menu on tray icon to start and stop the server.
The default settings are applied when server is starting (setting Active to True) if there is no configuration file.
In thi case server will create the configuration file with default settings at first start.
Server provides access only to databases specified in properties DatabaseNames and DatabaseFileNames.
Default values for these properties points to Demos\Data\DBDemos.adb database.
Server port can be set via LocalPort property of TACRServer.
To work with clients from remote machines you should set the IP-address of the server in the LocalHost parameter of the configuration file. Default value 'localhost' allows to work only with clients started on the same machine.
2) Connecting to the database on database server.
You can use a TACRDatabase component for connecting to a remote database.
Set LocalDatabase property to False, specifty necessary connection parameters via ConnectionParams property (DatabaseName, RemoteHost, RemotePort and LocalPort) and open database (Open or Active := True).
Default settings allows to test in on local machine:
DatabaseName = DBDemos
RemoteHost = localhost
RemotePort = 6669
LocalPort = 6668
See demo Client as an example of connecting to a remote database.
If OpenDatabasesInExclusiveMode is set to true the maximum number of connections to single database is:
- 5 in trial version;
- 2^31 in commercial version;
If OpenDatabasesInExclusiveMode is set to false the maximum number of connections to single database is:
- 2 in trial version;
- MaxSessionsCount parameter of the database file in commercial version;
Accuracer Database Server provides you a possiblity to change any SQL query before execution or abort it.
Thus you can make your application more flexible:
- you can change data definition without recompiling and reinstalling client applications
- you can block some SQL queries for security reasons
- you can log all SQL queries executed by clients
For more information read TACRServer.OnSQL event description in Accuracer Component Reference.
Another great advantage of the Accuracer Server is the custom messages support.
Now you can make any communication between server and any client connected to it.
You can send and receive text, binary and stream messages by both sides: client and server.
Thus you can communicate any client with another client (through the server), client with server and server with client.
And these messages can be sent and received at any time, simultaneously with accessing the tables and executing SQL scripts.
For more information look at events OnReceiveTextMessage, OnReceiveBinaryMessage, OnReceiveStreamMessage and method SendMessage of TACRDatabase and TACRServer components in Accuracer Component Reference.
Accuracer can compress and / or encrypt network traffic (ConnectionParams property of TACRDatabase and CryptoParams property of TACRServer).
There are following limitations of the current Client-Server version:
|·|| RepairTable, FlushFileBuffers, GetLastAutoinc and SetLastAutoinc does not supported
|·|| OnFilterRecord does not work with remote table and live remote queries
We will try to remove most of them in next version (excluding OnFilterRecord).