Avatar billede spurn Nybegynder
20. august 2002 - 12:43 Der er 11 kommentarer og
1 løsning

Spørge på om tabel eksisterer i MS SQL database[ASP.NET]

Hejsa

Jeg sidder i øjeblikket og skal have lavet en initialiseringsfil som skal opsætte databasen. Problemet ligger i at hvis det er en reinstall vil nogle af tabellerne eksistere og skal først droppes.

db forbindelsen bliver lavet på denne måde via en SQLConnection. Det jeg er ude efter er altså en funktion som kan spørge på om en given tabel eksistere, hvis den ikke er der skal den oprettes, hvis den er der skal den droppes, og derefter oprettes igen.

Programmeringen foregår i VB.NET
Avatar billede roe Nybegynder
20. august 2002 - 12:55 #1
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DIN TABEL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[DIN TABEL]
GO
CREATE TABLE............osv.
GO

Håber det kan hjælpe!
Avatar billede bennytordrup Nybegynder
20. august 2002 - 13:01 #2
if exists (select table_name from information_schema.tables where table_name = '<DitTabelNavn>')
  drop table <DitTabelNavn>

AFAIR bliver du nødt til at lave det gennem to gange kommandoer, da enten ADO.NET eller SQL Serveren ikke understøtter brugen af GO i et SQL Script (men det kan godt være, jeg husker forkert)
Avatar billede roe Nybegynder
20. august 2002 - 13:03 #3
Pak det ind i en procedure og drop GO, så burde det spille.
Avatar billede spurn Nybegynder
20. august 2002 - 13:08 #4
I har sikkert ret, men jeg er ikke lige med på hvad en procedure er...
Avatar billede spurn Nybegynder
20. august 2002 - 13:24 #5
Public Function getDS()

        DBforbindelse = DBmanager.OpretForbindelse()
        SQLstreng = "select * from Customers"

        DBforbindelse.Open()

        Dim adapter As SqlDataAdapter = New SqlDataAdapter()
        adapter.SelectCommand = New SqlCommand(SQLstreng, DBforbindelse)
        adapter.Fill(nytDataSet, "Customers")

        DBforbindelse.Close()

        Return nytDataSet

    End Function

Sådan ser det normalt ud når jeg tilgår databasen. Håber det kan hjælpe lidt nærmere ind til hvad det er hvad jeg søger, for jeg er ikke ret god til syntax så skal nok have mere end et vift med en vognstang :)
Avatar billede bennytordrup Nybegynder
20. august 2002 - 13:37 #6
Den stump kode har intet at gøre med opsætning/tilpasning af databasen at gøre.

Men hvorfor slette tabellerne ved reinstallation?
Avatar billede spurn Nybegynder
20. august 2002 - 13:50 #7
fordi vi er i testfasen, så når der går lort i det, vil det være rart at kunne starte på en frisk..

men bare opret et svar, jeg fik det til at virke med roes løsning, dog ved at lave en funktion EksistererTabel().
Avatar billede bennytordrup Nybegynder
20. august 2002 - 13:56 #8
Så bør det jo strengt taget være roe, som skal have points (med mindre, du har brugt min løsning også)
Avatar billede spurn Nybegynder
20. august 2002 - 14:09 #9
Så får han pointene

et andet problem er at man ikke kan droppe tabeller, med relationer, hvad gør man ved det ?

Could not drop object 'Employees' because it is referenced by a FOREIGN KEY constraint
Avatar billede roe Nybegynder
20. august 2002 - 14:16 #10
Tabellerne skal droppes i den rigtige rækkefølge!
Avatar billede roe Nybegynder
20. august 2002 - 14:19 #11
Fik jeg dine points ?
Avatar billede spurn Nybegynder
20. august 2002 - 15:12 #12
ja
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester