Allan Schuster Bach wrote:
>
> Jeg er igang med at udvikle et system, som skal kunne køre på flere
> forskellige database typer, som er MYSQL (hvilken jeg ikke ved en sk.. om),
> MS SQL-server 2000 samt en MS access database.
> Dette skulle principelt heller ikke være noget problem, for det er jo bare
> at skift databaseprovider i mit program.
>
> Men der hvor jeg er løbet ind i et seriøst problem, er omkring oprettelsen
> af tabeller i de forskellige databaser.
>
> Eksempel 1. fra en access
> create table Metadata (ID COUNTER, Script VARCHAR(50), Lablenavn
> VARCHAR(50));
"Counter" er ikke standard, og kan derfor ikke forventes at være til
stede i et andet DBMS. Brug integer i stedet, som du gør nedenfor.
> Eksempel 2. fra en MS SQL
> create table Metadata (ID INTEGER not null, Script CHAR(50) null, Lablenavn
> CHAR(50) null);
Hvorfor skifter du her fra varchar til char? MSSQL kender udemærket
varchar.
> Begge sql script oprette en database med 3 felter, som er id, script og
> labelnavn. Problemet er bare at syntaxen ikke er ens, og så har jeg ikke
> engang kikket på MYSql endnu.
>
> Findes der en måde hvorpå, jeg kan "stadardisere" mit sql, så jeg kun
> behøver et SQL-script. Eller skal jeg lave et SQL script for hver database
> jeg vælger. Jeg ville jo helst have et SQl-script, som kan oprette en tabel
> på en vilkårlig database, men det kan åbenbart ikke rigtig lade sig gøre,
> eller har jeg overset noget.
Hold dig til SQL92 standarden. Både access og mssql understøtter stort
set alt fra denne standard.
Stig giver desuden en række udmærkede råd for de mere specielle ting.
--
Kristian Damm Jensen | Feed the hungry at
www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.