🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153980

Re: Zapytania SQL w Javie

#153980
From: J-23
Date: Fri, 17 Jan 2014 14:26
81 lines
3287 bytes
W dniu 17.01.2014 10:06, inst4nce pisze:
> Witam
>
> Mam taki kawałek kodu:
>
> ------------------------------------------
>      wynik = "";
>      Statement query;
>
>      String[] SQL = {
>          "DROP TABLE AAAA",
>          "CREATE TABLE AAAA (ID INTEGER, STR VARCHAR(8))"
>      };
>
>      try {
>        query = c.createStatement();
>        for (int i=0; i<SQL.length; i++) {
>          wynik = wynik + SQL[i] + "\n";
>          query.executeUpdate(SQL[i]);
>          wynik = wynik + "Wykonano pomyślnie\n";
>        }
>      }
>      catch (Exception e) {
>        wynik = wynik + e.getMessage() + "\n";
>      }
>
>      return wynik;
> ------------------------------------------
>
> Zapytania są w tablicy SQL[], ponieważ w przyszłości ma być ich pełno i
> dlatego wykonują się w pętli.
>
> Chciałbym tak zmodyfikować kod, żeby w przypadku wystąpienia wyjątku,
> program dalej wykonywał zapytania SQL.
>
> W tym przypadku, gdy brakuje tabeli AAAA, zapytanie DROP... nie wykonuje
> się, program przechodzi do catch i koniec:
>
> Zmienna wynik:
> --------------
> DROP TABLE AAAA
> GDS Exception. 335544569. Dynamic SQL Error
> SQL error code = -607
> Invalid command
> Table AAAA does not exist
>
> A chciałbym, żeby było tak:
> --------------------------
> DROP TABLE AAAA
> GDS Exception. 335544569. Dynamic SQL Error
> SQL error code = -607
> Invalid command
> Table AAAA does not exist
> CREATE TABLE AAAA (ID INTEGER, STR VARCHAR(8))
> Wykonano pomyślnie
>
>
> pozdrawiam
> inst4nce
>

Masz fatalnie to napisane.

Zrob tak:

Dopisz do tego metodę sprawdzania czy istnieje jakaś tabelela czy nie. 
Robisz to przez zapytanie SQL a nie przez wyjątek tak jak to robisz 
teraz. Konkretnego zapytania Ci nie podam bo nie podałeś typu bazy 
jakiej używasz.

Radzę lekturę jak działa mechanizm wyjątków bo po za tym ze wiesz że 
występują podczas wystąpienia błędu to nie wiesz jak one działają.

Po za tym do obsługi błędów SQL używa się zazwyczaj klasy SQLException
http://docs.oracle.com/javase/7/docs/api/java/sql/SQLException.html
która jest potomkiem Exception.

Dlaczego SQLException a nie Exception zrozumiesz jak poczytasz o wyjątkach.

Pozdrawiam
J-23
Technical Details
Message-ID: <lbbffh$q16$1@mx1.internetia.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!not-for-mail
References: <52d8f270$0$2142$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!not-for-mail
From: J-23 <baczeklu@o2.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: Zapytania SQL w Javie
Date: Fri, 17 Jan 2014 15:26:36 +0100
Organization: Netia S.A.
Lines: 82
Message-ID: <lbbffh$q16$1@mx1.internetia.pl>
References: <52d8f270$0$2142$65785112@news.neostrada.pl>
NNTP-Posting-Host: 77-255-245-56.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: mx1.internetia.pl 1389969713 26662 77.255.245.56 (17 Jan 2014 14:41:53 GMT)
X-Complaints-To: abuse@inetia.pl
NNTP-Posting-Date: Fri, 17 Jan 2014 14:41:53 +0000 (UTC)
In-Reply-To: <52d8f270$0$2142$65785112@news.neostrada.pl>
X-Tech-Contact: usenet@internetia.pl
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
X-Server-Info: http://www.internetia.pl/
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit