Publish date: 2010-03-15

Three Reasons Why You Should Upgrade to the New IBProvider

Very often in our programs, we forget or are too lazy to check the data we transfer to our database. We believe that a smart Firebird or InterBase server will solve the possible issues itself, although this is not its task.

In extremely advanced cases, the data inputted by a user is immediately converted to the necessary type via CAST without any verification.

As a result, a user inputs a «bunk», a DBMS driver transfers the «bunk» to the server, and the server returns an error to the user. Your users start hating you because «your programs are glitchy and your fingers are all thumbs» and you hate users who are unable to input text properly.


Guess what the user will think of you
when he sees this error on his screen?


What Can I Do So My Programs Don’t «Glitch»?

Use Firebird and InterBase access components that have implemented control over the inputted data and their «smart conversion» into the server supported format. This will substantially reduce the amount of work you have with inputted data control and its coercion to the database types.

For instance, the new IBProvider itself provides “smart conversion” of text into DBTYPE_R8 (DOUBLE). In particular:

  • It controls overflow.
  • Flexible scalability algorithm prevents problems similar to CORE-2857.

For example:

dim cn
set cn = CreateObject("ADODB.Connection")

cn.Provider = "LCPI.IBProvider.3"
cn.Properties("Location") ="localhost:d:\database\employee.fdb"
cn.Properties("User ID")  ="SYSDBA"
cn.Properties("Password") ="masterkey"

cn.Properties("auto_commit_ddl") = 1 'run DDL in separate trans

cn.Open
cn.BeginTrans
cn.Execute("RECREATE TABLE TBL_R8 (R8 DOUBLE PRECISION)")

dim cmd
set cmd=createobject("ADODB.Command")
cmd.ActiveConnection=cn
cmd.CommandText="insert into TBL_R8 VALUES (?)"
cmd.Parameters.Append cmd.CreateParameter(,8) 'adBSTR

wscript.echo "------------------------------------------"
cmd(0).value="1."&string(1024,"0")
wscript.echo "insert value to TBL_R8: "&cstr(cmd(0).value)
cmd.execute

' or very huge double
'cmd(0).value="1"&string(1000*1000,"0")&"E-1000000"
'wscript.echo "------------------------------------------"
'wscript.echo "value2: "&cstr(cmd(0).value)
'cmd.execute

cn.CommitTrans

call cn.close()

After script execution, the screen will display the value of the input parameter that will be converted into DOUBLE PRECISSION and added to the database:

------------------------------------------
insert value to TBL_R8: 1.0000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000

If you work via the new IBProvider, such queries will NOT return the error of arithmetic exception, numeric overflow, or string truncation.



In 10 years of working with the IBProvider project,
we have FREQUENTLY come across similar PROBLEMS.

The recent case with text conversion into the DOUBLE type is by far not the only one. In 10 years of working with the IBProvider project, we have FREQUENTLY come across similar PROBLEMS:

  • The problem with accuracy when converting into DOUBLE
  • The problem working with NUMERIC types on .
  • Non-supported types (GUID, BOOL, MS SQL TIME and so on)
  • And many other problems due to which our «smart type converter» appeared.

How Are the Problems with Type Conversion Solved?

IBProvider has implemented its own «smart type converter», which:

  • Is compatible with all Windows versions, because it uses its own type conversion functions passing over the WinAPI.
  • In most cases, doesn’t require the explicit type of coercion to the database type, because it supports on-the-fly coercion of simple types, VARIANT type, arrays and binary data.
  • Emulates BOOL and GUID types absent in Firebird.
  • You don’t need to write your text recorders anymore. The type converter has a unique mechanism that supports on-the-fly text conversions of 49 charsets, including UNICODE, UTF-8, OCTETS, and NONE.

How can you make sure that your access component works PROPERLY?

Implementing a perfect opportunity in the program code is not enough, it is necessary to make sure that the code will work ERROR-FREE in the most unpredictable situations. It is especially topical for complicated programs such as database access components.

The only way to check if the component works properly is to employ an automatic test system. Otherwise you will inevitably have:

  • Memory leaks;
  • Critical shutdowns of applications;
  • Inconsistent error messages that cannot be debugged;
Currently, each (!) new IBProvider release undergoes about
half a million automatic tests!

IBProvider team released 12 new versions in 2009 and already three versions in 2010

In all the releases, we P-R-O-M-P-T-L-Y (promptly) implemented new functionality and solved known issues. We do not take money for new versions not released!

If you purchase IBProvider right now, you are guaranteed 1 year of free updates.

Do you want to make certain that you receive full-fledged releases and not raw builds?

Look through our news at least for the recent year.

For instance, in addition to the «smart conversion» of text into DOUBLE, in the new IBProvider version:

  • Algorithms for reading/recording of properties have been optimized.
  • The initialization property “Multiple Parameter Sets” is now TRUE by default. (v3)
  • The initialization property “rowset_vm_using” is now -1 by default. This disables the memory manager based on VirtualAlloc+SEH.
  • The error was fixed: ability to change RO properties when setting VT_EMPTY values.
  • The initialization property “Window Handle” is not saved in connection settings file anymore.
  • The provider uses UTF8 charset when saving initialization parameters into the file (IPersistFile interface)
  • Processing of errors in the IPersistFile interface methods has been improved.
  • Multiple inner changes.

Order IBProvider right now to
RECEIVE 1 year of FREE updates

The first 8, 5 4 purchasers will receive one more gift:
1 additional IBProvider update after the one year subscription ends..

Get IBProvider right now >>


Publish date: 2010-03-15. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link https://www.ibprovider.com/eng required.