Scroll to the end of this thread for the latest version of SQLitening v1.54 You must login to see the download links!!!
SQLitening Version 1.50
*** Highlights ***
1. Added slGetDatabaseAndFileNames which will return a list of database
and file names that are currently opened and attached.
2. Added slGetFieldDataTypes which will return the data type for each of
the columns in all the selected rows returned by the passed select
3. Added slSelBind which allows you to use binary data(Blobs and Unicode)
in where clauses and it's use will also prevent SQL injection.
4. Improved when a client process ends to prevent Half-Open connections.
Below are the details of the changes:
#====================<[ Version 1.5 July 4, 2011 ]>====================
1. ADDED -- command/function called slGetDatabaseAndFileNames which will
return a list of database and file names that are currently opened and
attached. The name entries are returned as a delimited text string which
is $NUL separated. Each entry contains two elements, a database name and
a file name. The two elements are separated by the vertical bar (|)
character. The first entry is always the Main database from the slOpen
command. The second entry will be the Temp database, but only if there
are temporary tables currently created. The rest of the entries, if any,
will be the attached databases. There are no file names assigned to
temporary tables nor temporary databases.
2. ADDED -- command/function called slGetFieldDataTypes which will return
the data type for each of the columns in all the selected rows returned
by the passed select Statement. The date types of each field for each row
are returned as comma delimited strings. Each row will return a stirng
of numeric values, one value for each column. Will return an empty string
if an error occurs or no row is selected. The SQLite data types are:
1=Integer, 2=Float, 3=Text, 4=Blob, 5=Null.
If, for example, your select statment returned 3 rows each with 4 columns
the returning string might be: 3314,3552,3315
3. ADDED -- the slSelBind function. This new command allows you to use binary
data(Blobs and Unicode) in where clauses and it's use will also prevent SQL
4. IMPROVED -- the optional Where parameter in slBuildInsertOrUpdate
as follows: If the Where value is omitted or is an empty string ("")
then will build an Insert statement else will build an Update statement.
When building an Update statement and the Where value is not "*" then a
Where clause will be appended as " Where " and then the Where value. If
the Where value is "*" then the Update statement will not have a Where
clause (Caution: All records in table will be updated!).
5. IMPROVED -- When a client process ends it normally notifies the server
and the connection is closed. For unknown reasons this does not happen
sometimes, resulting in a Half-Open connection. To assure this is
trapped, SQLiteningClient was changed to insure a message is sent at
least every two minutes. If no real message has been sent then a "ImHere"
message will be sent. Also changed SQLiteningServer to close a connection
if no message has been received for three minutes. This type of
close will be logged as "WentAway".
6. CHANGED -- the name of ZLib.Dll to SQLiteningZLib.Dll to avoid conflicts
with other application that also use ZLib, but a different one. There
are two freely available, ZLib1.Dll and ZLibWApi.Dll which are normally
renamed to just ZLib.Dll. ZLibWApi.Dll has all the functions of ZLib.Dll
plus the ability to create and read .Zip files. ZLibWApi.Dll uses standard
calling conventions while ZLib1.Dll uses the C calling convention therefore
they are not interchangable. ZLibWApi.Dll, renamed to SQLiteningZLib.Dll,
is the one used with SQLiteing. The prior ZLib.Dll distributed by SQLitening
should be deleted from your running folders.
7. FIXED -- SQLiteningServerAdmin to ensure that the SQLiteningServer.Cfg
file exists before attempting to run a tool.
8. FIXED -- bug in SQLitening. The slGetTables would not retrun the table
names for the Temp database.
9. FIXED -- bug in SQLiteningServer. All databases were automatically closed
when a connection ends. For speed reasons, no check was made to determine
if a database was still open. If a database was explicit closed with slClose
and the server was under stress (hi use) then an error could occur when
it was closed the second time. Changed to check if a database is still
open before closing when connection ends.
10.FIXED -- slGetStatus request 1 to properly return the time the lock was set.
11.FIXED -- the 'f' ModChar in slOpen as follows:
f = Do not enable foreign key support.
If 'f' is passed then will send: PRAGMA foreign_keys=Off
If 'f' is not passed then will send: PRAGMA foreign_keys=On
12.FIXED -- bug in SQLiteningServer. It would sometimes show the connetion
timed out when it actually was dropped.
13.FIXED -- bug in slSelStr. It would not allow you to use chr$(0) as either
of the delimiters.
14.REMOVED -- slsGetInsertID but only from the Special API, it will remain
in the other APIs. It was not returning the correct values in VB.
Any of the APIs can use the "Select last_insert_rowid()" which is a
core SQLite function.
15.DISALLOWED -- slPushSet and slPopSet in Remote mode. If it was used in
Remote mode the results were erroneous.
18. Update SQLite3.Dll to the version 18.104.22.168 dated June 29, 2011.
[attachment deleted by admin]
This post and attachment is to fix the bug in SQLiteningServer.Exe 1.50 which will cause your connection to time-out incorrectly, resulting in a -18 error.
For those you changed their ConnectionTimeOut= entity in the SQLiteningServer.Cfg to either -1 (never time-out) or to multiply the number of minutes by 3600, you will want to change it back.
To implement, stop the current SQLtiening service, copy the new SQLiteningServer.Exe, change the SQLiteningServer.Cfg, and then start the service.
This post and attachment is to improve SQLiteningServerAdmin.Exe. The tool to kill an Active Connection was not working properly. I also added a new tool which will display the version number of the currently running server.
The attachment also includes a new SQLiteningServer.Exe which will now show the server version number in the Log whenever the service is started.
To implement, stop the current SQLitening service, copy the new SQLiteningServer.Exe and SQLiteningServerAdmin.Exe and then start the service.
There was a flaw discovered in SQLiteningClient and a new one is posted here. You do not have to install it. The current one works OK but it is sending the ImHere message too often (every 2 seconds rather than 2 minutes).
There were several problems discovered in SQLiteningClient.Dll and SQLiteningServer.Exe when using multi threads within a process.
1. SQLiteningServer.Exe needed some areas that read/write flat files to be coded as CriticalSections.
2. The ImHere thread in SQLiteningClient.Dll was not being stopped correctly causing memory errors.
3. The TCP socket was not being properly closed in SQLiteningClient.Dll causing memory leaks.
These problems only occur if you are using multi threads within your process. If you do not use threads then there is no reason to apply this update.
Several problems were reported/found in SQLiteing.Dll, SQLiteingClient.Dll and SQLiteningServer.Exe. It is recommended you update SQLiteningServer while updating the two Dll's is optional.
1. Fixed bug in slBuildInsertOrUpdate where a value of only . or - or +
was incorrectly considered to be numeric.
2. Fixed bug in SQLiteningServer that was not deleting the files in the Temp
folder if the database was closed using slClose.
3. Fixed bug in SQLiteningServer that was creating unneeded files in the Temp
folder for smaller select statements.
4. Added a MutEx synchronizing event in SQLiteningClient to prevent the ImHere
message to be sent while sending/receiving a real message.
5. Fixed bug in SQLiteningClient that was not handling the timer going pas
midnight in the ImHere routine
6. Fixed bug in SQLiteningServer that was using Word instead of Dword to store
the timer value.
7. Added version info to the Dll's and Exe so you are able to determine the version
by viewing the properties.
The below attached zip contains only the files that changed in version 1.54.
This attach zip contains all the files as of version 1.54. The previous post zip only contians the changes for version 1.54.
[attachment deleted by admin]