Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 10:15 Der er 12 kommentarer og
1 løsning

Sql i java

Jeg kan ikke komme videre med denne sql-sætning i java. Jeg får en sql-exception med en "general error" fejlmeddelelse, når jeg udfylder mine tekstfelter i en GUI.
Koden:
ResultSet rs= s.executeQuery(
"SELECT DISTINCT LokaleType.LokaleType, Lokale.LokaleID, Lokale.Kapacitet, Bygninger.Betegnelse "+
" FROM (Bygninger INNER JOIN Reservation ON [Bygninger].[BygningsID]=[Reservation].[BygningsID]) INNER JOIN ((((Lokale LEFT JOIN OH ON [Lokale].[LokaleID]=[OH].[LokaleID]) LEFT JOIN PC ON [Lokale].[LokaleID]=[PC].[LokaleID]) LEFT JOIN WB ON [Lokale].[LokaleID]=[WB].[LokaleID]) INNER JOIN LokaleType ON [Lokale].[LokaleTypeID]=[LokaleType].[LokaleTypeID]) ON [Reservation].[LokaleID]=[Lokale].[LokaleID] "+
" WHERE ([LokaleType].[LokaleType]) Like "+LokaleType.getText()+" AND ([Lokale].[Kapacitet]) Between "+ KapacitetMin.getText()+" AND "+ KapacitetMax.getText()+" AND ([Reservation].[Dato])= "+ Dato.getText()+ " AND ([Reservation].[Start]) Not Between "+ StartTid.getText()+ " And "+ SlutTid.getText());
Avatar billede disky Nybegynder
08. maj 2002 - 10:44 #1
som jeg har sagt tidligere hvor du spurgte om det samme, man sætter altså ikke [] rundt om felt navn i SQL kode, jeg mener du skrev at access åd den uden problemmer, men access er heller ikke en SQL database.
Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 11:15 #2
Nu har jeg fjernet alle [], også får jeg en exception, der siger at jeg mangler en operator i min WHERE-sætning:
ResultSet rs= s.executeQuery(
"SELECT DISTINCT LokaleType.LokaleType, Lokale.LokaleID, Lokale.Kapacitet, Bygninger.Betegnelse "+
" FROM (Bygninger INNER JOIN Reservation ON Bygninger.BygningsID=Reservation.BygningsID) INNER JOIN ((((Lokale LEFT JOIN OH ON Lokale.LokaleID=OH.LokaleID) LEFT JOIN PC ON Lokale.LokaleID=PC.LokaleID) LEFT JOIN WB ON Lokale.LokaleID=WB.LokaleID) INNER JOIN LokaleType ON Lokale.LokaleTypeID=LokaleType.LokaleTypeID) ON Reservation.LokaleID=Lokale.LokaleID "+
" WHERE (LokaleType.LokaleType) Like "+LokaleType.getText()+" AND (Lokale.Kapacitet) Between "+ KapacitetMin.getText() +" AND "+ KapacitetMax.getText() +" AND (Reservation.Dato)= "+ Dato.getText() + " AND (Reservation.Start) Not Between "+ StartTid.getText() + " And "+ SlutTid.getText());
Avatar billede disky Nybegynder
08. maj 2002 - 12:09 #3
Prøv at ret where til:
" WHERE LokaleType.LokaleType Like "+LokaleType.getText()+" AND (Lokale.Kapacitet Between "+ KapacitetMin.getText() +" AND "+ KapacitetMax.getText() +") AND Reservation.Dato= "+ Dato.getText() + " AND (Reservation.Start Not Between "+ StartTid.getText() + " And "+ SlutTid.getText())+")";
Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 13:00 #4
Den sidste parentes i WHERE skal vel afslutte:
ResultSet rs= s.executeQuery(

Jeg har så prøvet at flytte parentesen før + ud før ; , så det kommer til at hedde:
" WHERE LokaleType.LokaleType Like "+LokaleType.getText()+" AND (Lokale.Kapacitet Between "+ KapacitetMin.getText() +" AND "+ KapacitetMax.getText() +") AND Reservation.Dato= "+ Dato.getText() + " AND (Reservation.Start Not Between "+ StartTid.getText() + " And "+ SlutTid.getText()+")");
 
men den kaster stadig den samme exception
Avatar billede disky Nybegynder
08. maj 2002 - 14:31 #5
kan du ikke lige poste hvad resultat af al den string konkatenering er, så er det lidt mere overskueligt.
Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 14:59 #6
Jeg har selv løst problemet vha. "#" og "'" i koden, ellers kan Access ikke finde ud af om det er en tal, streng, dato osv.

Der er dog opstået et andet problem ved min SELECT. Hvordan skriver man fra sql i java, at man vil lede i en specifik tabel.
Eks. Tabel.TabelID
Ved at skrive ligesom eksemplet får jeg en exception, som siger, at den ikke kan finde kolonnen
Avatar billede disky Nybegynder
08. maj 2002 - 15:23 #7
Du siger

Database.Tabel.Kolonne

f.eks.

MineVenner.Adresser.HusNummer

Sådanne gør man i rigtig SQL, desværre følger access ikke sql til punkt og prikke.
Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 15:38 #8
Det fungerer desværre ikke sådan.
Det virker derimod fint med SELECT *
Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 18:20 #9
Jeg har stadig ikke løst det sidste problem, og jeg har også prøvet med SELECT [Tabel].[TabelID]
Avatar billede soelvpil Nybegynder
08. maj 2002 - 19:28 #10
HUSK AT LUKKE DIT TIDLIGERE SPØRGSMÅL!!!!
Avatar billede lasse_hyldal Nybegynder
08. maj 2002 - 19:43 #11
Hvorfor skal jeg lukke spørgsmålet, når jeg ikke har fået svar på det?
Hvordan lukker man i øvrigt et spørgsmål?
Avatar billede disky Nybegynder
08. maj 2002 - 22:08 #12
du svarer selv, og accepterer dit eget svar.

Men du stiller indtil flere soørgsmål som jeg har svaret korrekt på. F.eks. mit svar kl 15:23:48

Hvis du bare spørger løs og afviser alle svar og beholder point skal du ikke regne med særligt meget hjælp i fremtiden.
Avatar billede lasse_hyldal Nybegynder
09. maj 2002 - 10:15 #13
Dit svar kl. 15:23:48 fungerede ikke. Men jeg skal nok huske at oprette et nyt spørgsmål, når jeg selv finder svaret på det tidligere. Jeg har dog ikke modtaget noget fra dig, der fungerede, men du skal nok få pointene for din ulejlighed.
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