Avatar billede davidfossil Nybegynder
11. februar 2005 - 16:19 Der er 16 kommentarer og
1 løsning

Case sensitivity i forb. med PostgreSQL kommandoer

Følgende SQL-kald bruges til at hente en række fra min database:

stmt.executeQuery("SELECT * FROM tblProducts WHERE productID=15");

Det virker bare ikke, idet sætningen et eller andet sted undervejs bliver til lower case, hvilket med fører at PosgreSQL kan finde hverken tabellen eller kolonnen.

ERROR: column 'tblproducts' does not exist.

Det er sandt at der ikke findes en tabel med det navn, da P'et skal stå med stort. Hvordan får jeg Java til at spørge ordentligt?
Avatar billede dsj Nybegynder
11. februar 2005 - 16:27 #1
På følgende side: http://borg.postgresql.org/docs/7.4/interactive/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS, forklares at PostgreSQL burde være ligeglad med hvorvidt tabel-navne er upper- eller lowercase, eller for den sags skyld en blanding.

Er du sikker på tabellen 'tblProducts' overhovedet eksisterer?
Avatar billede _carsten Nybegynder
11. februar 2005 - 16:29 #2
ERROR: column 'tblproducts' does not exist.

Siger jo egentlig at kolonnen 'tblproducts' ikke eksisterer


Prøv at copy/paste denne
stmt.executeQuery('SELECT * FROM tblProducts WHERE productID=15');
Avatar billede _carsten Nybegynder
11. februar 2005 - 16:30 #3
Sidste linie var jo noget sludder !
Avatar billede dsj Nybegynder
11. februar 2005 - 16:32 #4
Good point - den leder jo efter en kolonne med det navn, men carstens forslag vil ikke compile, da Java ikke accepterer single-quotes omkring strenge.
Avatar billede dsj Nybegynder
11. februar 2005 - 16:34 #5
Hvis jeg afvikler det samme statement mod en database der ikke har tabellen 'tblProducts', svarer den: "ERROR:  Relation "tblproducts" does not exist". I hvert fald har det intet med upper- og lowercase at gøre...
Avatar billede dsj Nybegynder
11. februar 2005 - 16:35 #6
Hvilken PostgreSQL-version og JDBC-version arbejder du med?
Avatar billede _carsten Nybegynder
11. februar 2005 - 16:36 #7
Korrekt dsj

Hvad giver den simple af resultat
stmt.executeQuery("SELECT * FROM tblProducts");
Avatar billede _carsten Nybegynder
11. februar 2005 - 16:43 #8
Hmm - som jeg læser det mangler du et semikolon efter 15

stmt.executeQuery("SELECT * FROM tblProducts WHERE productID=15;");
Avatar billede dsj Nybegynder
11. februar 2005 - 16:45 #9
Semikolons er ikke nødvendige - uanset database benytter jeg dem aldrig, fordi nogen enkelte ikke kan lide dem - f.eks. Oracle.
Avatar billede _carsten Nybegynder
11. februar 2005 - 16:46 #10
OK - kender ikke postgresql, skimmede bare teksten i dit link. :-)
Avatar billede davidfossil Nybegynder
11. februar 2005 - 16:48 #11
Jeg beklager, fik skrevet den forkerte fejl ned - fejlen ser således ud:

ERROR: relation "tblProducts" does not exist".

Omdøber jeg min tabel til tblproducts virker det, men så får jeg fejlen med at der ikke er noget der hedder "productid" (for kolonnen hedder jo "productID").

postgresql-8.0.1.zip
postgresql-8.0.309.jdbc3.jar
Avatar billede dsj Nybegynder
11. februar 2005 - 16:50 #12
Den letteste løsning for dig er nok at anvende lower-case only, men det lyder lidt mærkeligt at den brokker sig - måske der kan være nogle ændringer eller fejl i den nye PostgreSQL 8.
Avatar billede davidfossil Nybegynder
11. februar 2005 - 16:52 #13
det forslag kunne jeg også godt selv komme med, men nu skriver jeg her fordi jeg insisterer på at få lov at bruger upper case chars :)
Avatar billede dsj Nybegynder
11. februar 2005 - 16:54 #14
Prøv denne:

stmt.executeQuery("SELECT * FROM \"tblProducts\" WHERE \"productID\"=15");
Avatar billede dsj Nybegynder
11. februar 2005 - 16:56 #15
Citat fra: http://borg.postgresql.org/docs/8.0/interactive/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS:

"Quoting an identifier also makes it case-sensitive, whereas unquoted names are always folded to lower case."
Avatar billede davidfossil Nybegynder
11. februar 2005 - 17:07 #16
sådan! mange tak du - smid er svar :)
Avatar billede dsj Nybegynder
11. februar 2005 - 19:28 #17
Svar :-)
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