Thread View: pl.comp.lang.java
2 messages
2 total messages
Started by inst4nce
Fri, 17 Jan 2014 09:06
Zapytania SQL w Javie
Author: inst4nce
Date: Fri, 17 Jan 2014 09:06
Date: Fri, 17 Jan 2014 09:06
58 lines
2367 bytes
2367 bytes
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
Re: Zapytania SQL w Javie
Author: J-23
Date: Fri, 17 Jan 2014 14:26
Date: Fri, 17 Jan 2014 14:26
81 lines
3287 bytes
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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads