Avatar billede lazeric Nybegynder
20. september 2006 - 16:22 Der er 14 kommentarer og
1 løsning

Tjek om table findes

Kan man lave et script der tjekker om en MySQL database indeholder et bestemt table?
F.eks Vil jeg gerne lave så man kan spørge om table_A findes i databasen og få returneret et svar fremfor en fejl fra serveren?
Avatar billede fennec Nybegynder
20. september 2006 - 16:26 #1
on error resume next
set rs = conn.execute("select * from table_A")
if err.number <> 0 then
  response.write "der skete en fejl"
end if
on error goto 0
Avatar billede lazeric Nybegynder
20. september 2006 - 16:39 #2
Ok, ser lovende ud :-)
Men jeg er ikke helt med på hvordan jeg bruger den... vil du give et eksempel?
Avatar billede ldanielsen Nybegynder
20. september 2006 - 17:09 #3
SELECT xtype FROM sysobjects
WHERE xtype = 'U'

Der er en tabel i alle databaser der hedder sysobjects. Den indeholder en liste over alle objekter i databasen, og Brugertabeller har xtype 'U'.

For at kunne bruge dette skal du have sat permissions på sysobjects
Avatar billede ldanielsen Nybegynder
20. september 2006 - 17:09 #4
Du skriver MySql, er det ikke MSSQL vi taler om?
Avatar billede yocal Nybegynder
20. september 2006 - 19:57 #5
Hejsa,

Jeg vil anbefale at du bruger:

set rsTABLE = Conn.Execute( "SHOW TABLES LIKE 'table_A'" )
if rsTABLE.eof then
  Response.Write "table_A findes ikke!"
else
  Response.Write "table_A findes!
end if

// Yoc.
Avatar billede fennec Nybegynder
21. september 2006 - 09:38 #6
lazeric >>
Min kode er sådan som ASP laver en try/catch, og er fuld funktionel, som den er der.

on error resume next '<-- Start fejlhåndtering
.. Noget ASP kode ..
if err.number <> 0 then '<-- Er der sket en fejl
  response.write "der skete en fejl"
end if
on error goto 0 '<-- Afslut fejlhåndtering
Avatar billede lazeric Nybegynder
21. september 2006 - 10:51 #7
Fennec>>
Jeg har prøvet at bruge koden men den returnerer fejl uanset hvad jeg skriver i table navn, så noget gør jeg forkert :-)

Jeg gør således:
<%
SQLserveradr="xxxx"
SQLdatabase="xxxx"
SQLlogin="xxxx"
SQLpassword="xxxx"

Set Conn = Server.CreateObject("ADODB.Connection")

conStr = "driver={MySQL ODBC 3.51 Driver};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"

Conn.Open conStr

on error resume next '<-- Start fejlhåndtering
set rs = conn.execute("select * 2006_09_20")

if err.number <> 0 then '<-- Er der sket en fejl
  response.write "der skete en fejl"
end if
on error goto 0 '<-- Afslut fejlhåndtering
%>
Avatar billede lazeric Nybegynder
21. september 2006 - 10:55 #8
Yocal >>
Den kode du anbefaler giver fejlen: "Unterminated string constant" ?
Avatar billede lazeric Nybegynder
21. september 2006 - 10:58 #9
ldanielsen >>
Jo, det er MSSQL (MyBAD!) :-)

SELECT xtype FROM sysobjects
WHERE xtype = 'U'

Giver fejlen "Expected 'Case'"?
Avatar billede lazeric Nybegynder
21. september 2006 - 12:43 #10
Ahh Fennec >>

Din virker jo fint... der manglede jo bare "from" i select:

set rs = conn.execute("select * from table_a")

Smid lige et svar så du kan få point :-)
Avatar billede fennec Nybegynder
21. september 2006 - 13:13 #11
Den burde bare virke uden også. On error samler alle fejl op, så mangler der et from, skal den fejle på "Syntax error in select"

.o) <-- One Eyed Jack
Avatar billede lazeric Nybegynder
21. september 2006 - 13:49 #12
Ok, men hva faaan... nu virker det og jeg er glad :-) Tak igen!
Avatar billede lazeric Nybegynder
25. september 2006 - 15:25 #13
Hov Fennec. Kan jeg også bruge den til at lede efter et table der inderholder en bestemt variable?
F.eks noget ala:

set rs = conn.execute("Select * from `" & Request.querystring("dato") & "` where vagt=`" & vagt & "`")

Jeg kan nemlig ikke få det til at virke :-)
Avatar billede fennec Nybegynder
02. oktober 2006 - 10:13 #14
Undskyld det sene svar, men jeg har været syg hele sidste uge.

Jeg er ikke helt tilfreds med at "on error resume next" ikke fanger alle fejl, for det burde den gøre. Kører du tilfældigvis hos b-one??
Avatar billede lazeric Nybegynder
02. oktober 2006 - 19:48 #15
Hey, sorry... jeg fik det til at virke, men glemte at skrive det her :-)
Det var variablen "vagt" der var lidt spunk i. Tak igen :-)
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
Kurser inden for grundlæggende programmering

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