• Welcome, Guest. Please login.
September 24, 2020, 08:34:59 am


Welcome to the SQLitening support forums!

Who is using SQLite3 Client/Server... anyone??

Started by Paul Squires, April 16, 2008, 11:28:40 am

Previous topic - Next topic

Paul Squires

April 16, 2008, 11:28:40 am Last Edit: June 29, 2008, 07:44:19 pm by TechSupport
Hi Everyone,

Because SQLite3 Client/Server is a free, open source program, I really have no idea how many (if anyone) is actually using the program. I expect that people have downloaded it and play around a bit with it, but I really wonder if it is actually being used in real live applications.

I only develop this product as time permits so if people are not actively using it then the incentive to push develop is really not there (well, it will be there once FireFly 3 is finished because I have a real big need for this database program after that!).

If you feel comfortable posting your use of SQLite3 Client/Server then I would greatly appreciate it. The more people that post in this thread with an account of their use of the product, the greater incentive I have to speed up development.

A simple post describing the type of application you are developing and whether it is single user or multiuser (if multiuser, then how many active connections to the server do you anticipate).


Mark Strickland

Currently working on a project to convert a large Pharmacy application written in FireFly from Cheetah to SQLite C/S.  This is a multi-user system.  The typical client has only 1-2 users but a few may go as high as 5-6.

There are about 24 Cheetah "Tables" using a total of 41 index files in the applicaition.

Part of the conversion involves some restructuring of the database access techniques.  Some things can be greatly simplified using SQL JOINS and other SQL specific techniques.
Mark Strickland, CISSP

Elias Montoya

Paul... i will release a huge update of Egrid32 in few days,
maybe you could put together an example of the Client/Server
and i can include it in the examples released. To give both
producs some extra exposure.

I wanted to put something spontaneous here,
But i didnt had time to think of something good.

Fredrick Ughimi

April 16, 2008, 07:19:59 pm #3 Last Edit: April 16, 2008, 08:28:57 pm by Fredrick Ughimi
Hello Paul,

I started using SQLite Client/Server for an Inventory program for a small Pharmacy outfit today. Prior to this time I have been a heavy user of Cheetah (I still love Cheetah though). With Mark Strickland kind gesture of providing Cheetah2SQLite tool free that would enable migration to SQLite Client/Server alot easier (for those using Cheetah).

Client/Server is the de facto at the moment and its only natural for those still using file servers to migrate. Due to the nature of the applications I develop, I use database heavily in  multiuser environments.

>>(if multiuser, then how many active connections to the server do you anticipate).

For this new Inventory application, I anticipate about 5 active connections (Might grow with time). If I successfully develop this application using SQLite Client/Server, then I would start converting my Hospital Software currently running on 20 workstations in an Hospital here.

Best regards,

Fredrick O. Ughimi<br /><br />fughimi@gmail.com<br />- Freedom lies in being bold -- Robert Frost, Poet

Paul Squires

I intend to use SQLite3 Client/Server (and FireFly3) to build a new accounting program. I have parts of it started - I started writing it using Cheetah4 as the database so I tore all of that out and now have started replacing it with SQLite C/S.

Screenshots attached. Not much to look at yet.  :)

[attachment deleted by admin]

[attachment deleted by admin]

Roger Garstang

Wasn't much to look at when we tried it out a couple years ago either.  At least you kept on it.  I still have the code for the other attempt somewhere just because it had some useful snap to desktop and positioning code.  The icons and interface was pretty good too.  Did you ever do much more with the Custom Controls you made and/or added them to FF3?

On the thread topic...I was following this for a little while.  Didn't have much use for it at the time, but may in the future.  Can any of this access MS SQL 2005 stuff?  Or is that where I'd need something else?
Roger Garstang
Help Desk / IT / Programmer
Wentzville, MO

"If you aim at nothing...you will hit it." ~(8o?){-<

Paul Squires

I still have our old failed code attempt for a business management system as well. There were some good ideas in there. I haven't heard from Haakon in a long, long time. I hope that he's doing okay. I don't think he programs much anymore. :(

I built a DOS accounting program that I still use for my brother's pharmacy. For years I have been meaning to build a Windows version. I will... someday. :)   The other day my friend showed me a program called Sage Line 50. I really liked the layout of that accounting program. It is much cleaner, less cluttered, than say QuickBooks or PeachTree.

Paul Squires

Those custom controls that we used to use will modified a little bit and included in FF3. Actually, I hope to have a lot of custom controls for FF3 users.


Hi Paul,
Thanks for this very usefull services !

Based on your sample, I had created a special kind of DLL in order to work with NeoBook ( www.neosoftware.com )

You can see this at:


When I compiled this DLL and "plug in" it into NeoBook, I received a System message with something like this: (excuse me for my bad english, I received this message in spanish)

"Can't find the entry point of sqlite3_prepare_v2 function at sqlite3.dll"

I had replaced all calls of sqlite3_prepare_v2 function with the sqlite3_prepare function. Aparently all works fine.

Do you think that this change could generate any problem ?

Thanks in advance.

Greetings from Buenos Aires, Argentina.

Paul Squires

Hi David,

Welcome! It's nice to see this project being used in a whole different environment - Neobook - as a plugin. I hope that it will work well for your customers.

It is strange that sqlite3_prepare_v2 is showing as not found. It is being exported from the DLL in the same fashion as sqlite3_prepare is.

Using sqlite3_prepare should not cause too many problems. Here is the explanation from the SQLite source code:

'** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
'** recommended for all new programs. The two older interfaces are retained
'** for backwards compatibility, but their use is discouraged.
'** In the "v2" interfaces, the prepared statement
'** that is returned (the [sqlite3_stmt] object) contains a copy of the
'** original SQL text. This causes the [sqlite3_step()] interface to
'** behave a differently in two ways:
'** <ol>
'** <li>
'** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
'** always used to do, [sqlite3_step()] will automatically recompile the SQL
'** statement and try to run it again.  If the schema has changed in a way
'** that makes the statement no longer valid, [sqlite3_step()] will still
'** return [SQLITE_SCHEMA].  But unlike the legacy behavior, [SQLITE_SCHEMA] is
'** now a fatal error.  Calling [sqlite3_prepare_v2()] again will not make the
'** error go away.  Note: use [sqlite3_errmsg()] to find the text of the parsing
'** error that results in an [SQLITE_SCHEMA] return.
'** </li>
'** <li>
'** When an error occurs,
'** [sqlite3_step()] will return one of the detailed
'** [SQLITE_ERROR | result codes] or
'** [SQLITE_IOERR_READ | extended result codes] such as directly.
'** The legacy behavior was that [sqlite3_step()] would only return a generic
'** [SQLITE_ERROR] result code and you would have to make a second call to
'** [sqlite3_reset()] in order to find the underlying cause of the problem.
'** With the "v2" prepare interfaces, the underlying reason for the error is
'** returned immediately.
'** </li>
'** </ol>

So, basically error handling is a little different and so is dealing with the reporting of schema changes.


Hi Paul,
Thanks a lot for your fast answer !

A couple of questions:

Are there any function in order to go to a specific row on the recordset? something like sql3_rsMoveTo ?

I know all recordset is treated as string.
Are there any function in order to know what kind of field is a column?
For example, if there are any numeric field, I would like return them as formated string (using$(....)); or a Blob field I prefer return "Blob" literal instead the value ( I don't know if Blob field has binary data)

Thanks again,
David de Argentina

Paul Squires

Quote from: David on May 09, 2008, 04:55:32 pm
Are there any function in order to go to a specific row on the recordset? something like sql3_rsMoveTo ?

Sorry - no function like that. You need to get the recordset and iterate through it. You could save that data to some type of an array and then use that array in order access it in a random fashion.

I know all recordset is treated as string.
Are there any function in order to know what kind of field is a column?

SQLite does have functions to return the affinity of a certain column. I have not implemented this in the project yet. Also, I have written any code yet to handle blob data. I should do that next. :)


Wow !
You are faster than SQLite !
Thanks !

Another tip:

you set:

IF sql3_select( hSession, sSQL, rs, 1000 ) = 0 THEN

in order to set the max number of rows of the recordset (1000), but... if you do:

SELECT * FROM parts LIMIT 1,5000

you receive a 5000 rows recordset.

(this instruction takes near 30 secs on my AMD64/512MB/XPSP2 running locally)

I think i must check the SQL constructor before run the SQLite command.... or do you think there are another way to prevent this ?

Thanks again,
David de Argentina

Rolf Brandt

Hello Paul,

I am planning to use SQLite3 Client/Server for the next version of my Taxi/Ambulance Dispatching software.

One thing I would love to see is that the server could be run as a service or at least be minimized to the notification area.

Meanwhile I will do some performance tests.

So please don't give it up!


I like to cook with wine - sometimes I even add it to the food.

Paul Squires

Excllent Rolf, thanks! Running the server as a service is 'on the list'. I also need to add blob support.