With “table names” I mean just the name of normal (not queries or stuff like that), plain old tables. This is because I’m working on a project that currently connects to the Jet engine and among other features, it shows a list of tables that the user would double click to see some specific’s table contents. But now I want the user to be able to change the engine from a list of installed engines. But for my program to work with other engines it will need to get the table names in a way that will work for every SQL engine (or at least most of them). I actually also need to be able to get all the column names for a specific table, and also, be able to create a “CREATE TABLE” query in a way that will work with every possible engine (since the user can create tables from a wizard, and my program generates the query). I’m actually very doubtful that this is possible but, as far as I know, Visual Studio can create tables from a wizard for different database engines. How do they manage to do this? Will I have to have a different “CREATE TABLE” query for every possible SQL engine?
I’m wondering if ADO can help with this as it seems to have everything somehow standardized.
No, unfortunately there is no general way to do these things as far as I know. All DB engines have slightly different dialects of DDL and SQL, support different sets of data types, and different ways of managing their metadata etc. If you keep to the absolute lowest denominator of features I guess you could rely on standard SQL/DDL but that will be very limited.
Usually this is solved by creating an abstract data layer with several different implementations which handles the differences.
ADO only solves part of the problem as it offers a common interface for sending queries to a database but the SQL in the queries have to be specified by the client.