SQLite Data Access Components Frequently Asked Questions
Couldn't find the answer to your question? Take a look at our support forum.
This page contains a list of Frequently Asked Questions for SQLite Data Access Components.
If you have encounter a question with using LiteDAC, please browse through this list first. If this page does not answer your question, refer to the Getting Support topic in LiteDAC help
Installation and Deployment
I am having a problem installing LiteDAC or compiling LiteDAC-based projects...
You may be having a compatibility issue that shows up in one or more of the following forms:
- Get a "Setup has detected already installed DAC packages which are incompatible with current version" message during LiteDAC installation.
- Get a "Procedure entry point ... not found in ... " message when starting IDE.
- Get a "Unit ... was compiled with a different version of ..." message on compilation.
You can have such problems if you installed incompatible LiteDAC, IBDAC, SDAC, ODAC, PgDAC or MyDAC versions. All these products use common base packages. The easiest way to avoid the problem is to uninstall all installed DAC products and then download from our site and install the last builds.
What software should be installed on a client computer for LiteDAC-based applications to work?
The minimal configuration of client installation includes the following:
- Copy the SQLite client library file sqlite3.dll to the folder available for executable unit of your program. For example, to the folder with your executable file, or to the Windows system folder.
For more information, see description of the LoadLibrary function and the environment variable PATH.
Core Lab renaming issue that conserns Delphi for .Net users
- Please remove all CoreLab assamblies references from your project and add corresponding Devart ones.
- Please change all unit references in uses clauses from CoreLab to Devart (you can use standard renaming tool)
Licensing and Subscriptions
Am I entitled to distribute applications written with LiteDAC?
If you have purchased a full version of LiteDAC, you are entitled to distribute pre-compiled programs created with its use. You are not entitled to propagate any components inherited from LiteDAC or using LiteDAC source code. For more information see the License.rtf file in your LiteDAC installation directory.
Can I create components using LiteDAC?
You can create your own components that are inherited from LiteDAC or that use the LiteDAC source code. You are entitled to sell and distribute compiled application executables that use such components, but not their source code and not the components themselves.
I have a registered version of LiteDAC. Will I need to pay to upgrade to future versions?
All upgrades to future versions are free to users with an active LiteDAC Subscription.
What are the benefits of the LiteDAC Subscription Program?
Users with a valid LiteDAC Subscription get the following benefits:
- Access to new versions of LiteDAC when they are released
- Access to all LiteDAC updates and bug fixes
- Product support through the LiteDAC Priority Support program
- Notification of new product versions
Priority Support is an advanced product support program which offers you expedited individual assistance with LiteDAC-related questions from the LiteDAC developers themselves. Priority Support is carried out over email and has a two business day response policy.
The LiteDAC Subscription Program is available for registered users of LiteDAC.
Can I use my version of LiteDAC after my Subscription expires?
Yes, you can. LiteDAC version licenses are perpetual.
I want a LiteDAC Subscription! How can I get one?
An annual LiteDAC Subscription is included when ordering or upgrading to any registered (non-Trial) edition of LiteDAC.
How can I determine which version of LiteDAC I am using?
You can determine your LiteDAC version number in several ways:
- During installation of LiteDAC, consult the LiteDAC Installer screen.
- After installation, see the history.html file in your LiteDAC installation directiory.
- At design-time, select LiteDAC | About LiteDAC from the main menu of your IDE.
How can I execute a query saved in the SQLInsert, SQLUpdate, SQLDelete, or SQLRefresh properties of a LiteDAC dataset?
The values of these properties are templates for query statements, and they cannot be manually executed. Usually there is no need to fill these properties because the text of the query is generated automatically.
In special cases, you can set these properties to perform more complicated processing during a query. These properties are automatically processed by LiteDAC during the execution of the Post, Delete, or RefreshRecord methods, and are used to construct the query to the server. Their values can contain parameters with names of fields in the underlying data source, which will be later replaced by appropriate data values.
For example, you can use the SQLInsert template to insert a row into a query instance as follows.
- Fill the SQLInsert property with the parametrized query template you want to use.
- Call Insert.
- Initialize field values of the row to insert.
- Call Post.
The value of the SQLInsert property will then be used by LiteDAC to perform the last step.
Setting these properties is optional and allows you to automatically execute additional SQL statements, add calls to stored procedures and functions, check input parameters, and/or store comments during query execution. If these properties are not set, the LiteDAC dataset object will generate the query itself using the appropriate insert, update, delete, or refresh record syntax.
Some questions about the visual part of LiteDAC
The following questions usually arise from the same problem:
- I set the Debug property to True but nothing happens!
- While executing a query, the screen cursor does not change to an hour-glass.
- Even if I have LoginPromp set to True, the connect dialog does not appear.
To fix this problem, you should add the LiteDacVcl unit to the uses clause of your project.
I would like to develop an application that works with SQLite databases. Which should I use - LiteDAC or dbExpress?
dbExpress technology serves for providing a more or less uniform way to access different servers (SQL Server, MySQL, Oracle and so on). It is based on drivers that include server-specific features. Like any universal tool, in many specialized cases dbExpress providers lose some functionality. For example, the dbExpress design-time is quite poor and cannot be expanded.
LiteDAC is a specialized set of components to access SQLite databases with advanced design-time and component interface similar to BDE.
We tried to implement maximal SQLite support in LiteDAC. dbExpress technology puts severe restrictions. For example, Unicode fields cannot be passed from the driver to dbExpress.
In some cases dbExpress is slower because data undergoes additional conversion to correspond to dbExpress standards.
To summarise, if it is important for you to be able to quickly adapt your application to a database server other than InterBase, it is probably better to use dbExpress. In other cases, especially when migrating from BDE or ADO, you should use LiteDAC.
When editing a DataSet, I get an exception with the message 'Update failed. Found %d records.' or 'Refresh failed. Found %d records.'
This error occurs when the database is unable to determine which record to modify or delete. In other words, there are either more than one record or no records that suit the UPDATE criteria. Such situation can happen when you omit the unique field in a SELECT statement (TCustomDADataSet.SQL) or when another user modifies the table simultaneously. This exception can be suppressed. Refer to TCustomDADataSet.Options topic in LiteDAC help for more information.
I cannot use INT64 fields as key fields in master-detail relationship.
Fields of this type are represented in Delphi by TLargeIntField objects. In some versions of Delphi, you cannot access these fields through the Value property (see the protected method TLargeintField.SetVarValue in the DB unit for details). To avoid this problem, you can change the field type to INTEGER, which is usually sufficient for key fields. Alternatively, you can avoid using Value.
Can LiteDAC and BDE functions be used side-by-side in a single application?
Yes. There is no problem with using both LiteDAC and BDE functions in the same application.