Link to home
Start Free TrialLog in
Avatar of scanhelp
scanhelp

asked on

What db's can I claim support for?

I recently added some DSN support to my C++ application:
https://www.experts-exchange.com/questions/21811926/CDaoDatabase-And-MS-SQL.html

And I am curious as to what db's I can claim to support now.  

I will have a dialog box to get a DSN and a user name and password if needed.  So with supporting DSN, what db's can I claim to support with my application?  Basically I am scanning a file, and then entering a link to that file in the database.  Easy retrieval for the user.

Thanks in advance!
Avatar of DanRollins
DanRollins
Flag of United States of America image

Since your solution uses the ODBC layer, you can probably say "we support all DBMSs" (since any DBMS worth having provides an ODBC driver).

I can tell you my experience:  I wrote a complex program that used a runtime (redistributable) version of Sybase SqlAnywhere.  I had to make just one change -- use GETDATE() rather than NOW() -- to add support for MsSQL.  The code supported MySQL without change. I added support for IBM DB2 in one afternoon (problem related to character case of field names and quoted identifiers).  If I'm asked to add support for Oracle, I can promise completion in no more than several days.  

Which databases your program supports "out of the box" will depend on what types of things you are doing.  If you are just displaying tables and fields, inserting and deleting records, then you probably support ALL databases.  Incompatibilities usually revolve around things like the use of non-ANSI-compliant(proprietary) SQL statements and/or limitations intentionally built-into the DBMS (example, the Sybase Runtime will not process the CREATE TABLE command).

-- Dan
Avatar of scanhelp
scanhelp

ASKER

All I am doing is writing two things to the db.
1.  An image in one of three forms (OLE Binary Data (basically a data stream with some header info), Binary data, and a path (c:\myimage.jpg)).
2.  If selected, a text description of that image.

Any other db stuff would have to be handled elsewhere.

So you say "All DBMSs", and "ALL daabases", could you list the most common ones?  Would like to have them listed for keyword reasons....
MySql?
MS Sql.
Access.
Oracle?
You get the point... a good list of 10 or so (if there are that many) would be great.  Along with what keywords would be good to say.

Rather than list them all in your product description, I'd recommend using a generic phrase such as "All ODBC-compliant" databases, including...." then list the ones that you had actually tested.  You can download trial versions of nearly anything you want to test.
Can you give me a basic list (or point me to one)?  All a matter of keywords on our website.


I am new to Enterprise level databases, and want to make sure I accurately list the major ones we support.  

Thanks Dan.
a google query like this:
  http://www.google.com/search?q=DBMS+Access+Oracle+DB2+SQL+Server+MySQL
brings up lots of info.  DBMSes discussed in/covered by
   http://www.databasejournal.com/
are popular and here is a list of ODBC driver vendors.
   http://www.sqlsummit.com/ODBCVend.htm

What they don't cover (and might be worth mentioning) are the built-in drivers to access text files and even Excel spreadsheets as data sources.   Look at the list of supported drivers that appear in the ODBC control panel for a list of databases that Microsoft thinks are worth supporting out of the box.

    List of ODBC drivers installed by Access, Office, and MDAC
    http://support.microsoft.com/default.aspx?scid=kb;en-us;208689
ASKER CERTIFIED SOLUTION
Avatar of jfoutz
jfoutz

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
You will need to ensure that all SQL queries are SQL-92 compliant i.e. use an agreed subset of SQL common to all database suppliers: This is pretty minimal but covers the basic operations of creating, modifying and deleting records.

What is does mean is that your application is unable to use vendor extensions that optimise queries or provide useful functionality: For example, Oracle SQL allows for searching hierarchies in a single select, Microsoft SQL does not. Also, all vendors have optimiser hints for various statements to get extra performance and the general SQL-92 compatible statements do not.

This general SQL approach does let you write SQL once - but it does miss out on the benefits of vendor specific features!

Another approach is to develop an abstraction layer that provides a common set of functions that abstract the data layer completely. And then implement a version of this layer for each vendor product.

The higher layers of the application then use a 'vendor' specific component which can then take full advantage of all of the tweaks and optimisations within the vendor SQL. So that gives you the best of both worlds.
Thanks everybody for the comments.

Dan, sorry for not being able to give you the points.... but I was looking for a specific list.  Which was provided by jfoutz.
No problem.  I was just showing you how to find information for yourself.  
Obviously my efforts were misguided.