02. maj 2003 - 13:04Der er
9 kommentarer og 1 løsning
kørsel af en sql file
Hejsa
Jeg har en idé til en løsning til noget jeg roder med. Jeg har behov for at en file f.eks. update.sql altså en txt file som indeholder en række sql kommandoer. Hvordan køre jeg nemmest denne i asp.net. Btw jeg bruger VB.
Jeg kan desværre ikke forklare dig hvordan du gør i VB, men i C#. Da de 2 sprog ligner rimeligt meget hinanden, kan du sikkert godt gætte dig til resten!
Denne metode, som jeg paster ind herunder kan både scripte en Stored Procedure eller et reelt .sql script:
private void executeScript(string scriptName, int what) { StreamReader sr; if (what == 0) { sr = new StreamReader(Directory.GetCurrentDirectory() + @"\SQL\" + scriptName); } else { sr = new StreamReader(Directory.GetCurrentDirectory() + @"\SQL\Procedures\" + scriptName); }
string script = sr.ReadToEnd().Replace("GO",""); SqlCommand cm = new SqlCommand(script,sc); cm.ExecuteNonQuery(); sr.Close(); }
Det eneste du skal huske, er at fjerne alle "GO" fra dine .sql scripts før du afvikler dem, da den indbyggede parser ikke kan finde ud af hvad den skal bruge dem til!
Det er ret nemt. Som du kan se, skal du blot læse dine scripts ind i en stream og derefter afvikle præcis som du gør med alle andre SQL-statements!
Jeg har faktisk aldrig prøvet at "Insert'e" data, når jeg executer mine SQL-scripts, men flg. eksekverer f.eks uden problemer efter at have fjernet "GO":
ALTER TABLE [dbo].[BANNERS] WITH NOCHECK ADD CONSTRAINT [PK_BANNERS] PRIMARY KEY CLUSTERED ( [GUID] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[BANNER_CLICKS] WITH NOCHECK ADD CONSTRAINT [PK_BANNER_CLICKS] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[BANNER_POSITIONS] WITH NOCHECK ADD CONSTRAINT [PK_BANNER_POSITIONS] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[BANNERS] ADD CONSTRAINT [DF_BANNERS_HITS] DEFAULT (0) FOR [HITS], CONSTRAINT [DF_BANNERS_DATE_CREATED] DEFAULT (getdate()) FOR [DATE_CREATED], CONSTRAINT [DF_BANNERS_EXPS] DEFAULT (0) FOR [EXPS] GO
ALTER TABLE [dbo].[BANNER_CLICKS] ADD CONSTRAINT [DF_BANNER_CLICKS_DATE_CLICKED] DEFAULT (getdate()) FOR [DATE_CLICKED] GO
ALTER TABLE [dbo].[BANNER_CLICKS] ADD CONSTRAINT [FK_BANNER_CLICKS_BANNERS] FOREIGN KEY ( [GUID] ) REFERENCES [dbo].[BANNERS] ( [GUID] ) GO
ALTER TABLE [dbo].[BANNER_POSITIONS] ADD CONSTRAINT [FK_BANNER_POSITIONS_BANNERS] FOREIGN KEY ( [GUID] ) REFERENCES [dbo].[BANNERS] ( [GUID] ) GO
Cdm_kiwie, Tak for pointene! Håber, at det virker for dig!!
/thomas.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.