Allgemeine SQL-Abfrage (Syntax)

Ich habe eine Datenbank sowhl auf dem SQL-Server als auch identisch als Access-Datenbank. Der Zugriff erfolgt per DataAdapter.

Gibt es ein Möglichkeit den abweichenden SQL-Syntax direkt von .net anpassen zu lassen?

bspw.
ACCESS: SELECT * FROM Tabelle WHERE aktiv=true
SQL: SELECT * FROM Tabelle WHERE aktiv=1
bzw. auch Datumsabfragen, etc.

Ich behelfe mir aktuell mit einern Convert-Funktion, was aber nicht die optimale Lösung ist.
aktiv=cSql(TRUE, E_Access) bzw. aktiv=cSql(TRUE, E_SQL)

Gruss,
Andi

Hallo Andreas,

Leider sehe ich da ziemlich schwarz. Ein DB-Syntax-Translator wie er dir vorschwebt, ist mir nicht bekannt. Mal kurz angedacht:

Nachdem du für SQL und Access unterschiedliche Data Provider verwendest, die DB-spezifisch und damit auch an die jeweilige DB-Syntax gebunden sind, ist das auf diese Art leider nicht möglich. Du benötigst ja schon unterschiedliche Klassen für den jeweiligen DB-Zugriff, das hakt ja schon vor dem Problem mit der Syntax.

Außer es findet sich ein ADO.NET Data Provider, der für den Zugriff auf beide Backends ermöglicht (ist aber eher hypothetisch, evtl. geht das mit entsprechenden ODBC Data Providern).

Eventuell wäre Linq eine Möglichkeit, ich habe es selbst jedoch in der angedachten Form (Multi-DB-Zugriff) nicht gemacht. Zudem bietet auch hier Microsoft für Access nichts OUT of the Box, auch hier wäre ein third Party LINQ to ODBC Treiber oder LINQ to JET/OLEDB erforderlich. Und du müsstest dann zusätzlich sämtliche Queries auf LINQ umstellen.

Eine ganz hässliche Möglichkeit wäre es, die SQL-Tabellen in einer Access DB zu verknüpfen, und dann über diesen DB-„Proxy“ die Abfragen an den SQL-Server zu schicken. Dann könntest du alles mit Access MDBs machen. Das empfehle ich nicht bei Multi-User-Betrieb oder großen / und schon gar nicht wichtigen Datenbanken.

Gruß
tastatürchen