 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
gnebro Guest
|
Posted: Fri Sep 26, 2003 1:35 pm Post subject: PreparedStatement e SQLException |
|
|
Ciao a tutti,
faccio un insert attraverso un
stmt = conn.prepareStatement("INSERT INTO .... VALUES(?,?, ...)");
set...
ecc. ecc.
Tutto bene ma quando si genera una SQLException (per es. per un valore
troppo "large" per una colonna) c'è un qualche modo di farsi ritornare (e
stampare un un log) l'istruzione di insert in sintassi SQL (con relativi
valori)? Il problema è che ho tabelle con una cinquantina di colonne e
capire qual'è il valore che ha generato l'eccezione non è semplice né
rapido:-(
Grazie mille.
--------------------------------
Inviato via http://usenet.libero.it
|
|
| Back to top |
|
 |
gparmiggiani Guest
|
Posted: Fri Sep 26, 2003 2:56 pm Post subject: Re: PreparedStatement e SQLException |
|
|
la crepa non la tira quando fai la execute? se si i parametri dovresti
averli appena settati e dovresti essere in grado di farne il dump. per
l'sql non è detto ma già dai parametri e dallo stack trace dovresti
capire qual'è.
ciao
On Fri, 26 Sep 2003 13:35:13 +0000, gnebro wrote:
| Quote: | Ciao a tutti,
faccio un insert attraverso un
stmt = conn.prepareStatement("INSERT INTO .... VALUES(?,?, ...)");
set...
ecc. ecc.
Tutto bene ma quando si genera una SQLException (per es. per un valore
troppo "large" per una colonna) c'è un qualche modo di farsi ritornare (e
stampare un un log) l'istruzione di insert in sintassi SQL (con relativi
valori)? Il problema è che ho tabelle con una cinquantina di colonne e
capire qual'è il valore che ha generato l'eccezione non è semplice né
rapido:-(
Grazie mille.
--------------------------------
Inviato via http://usenet.libero.it
|
|
|
| Back to top |
|
 |
The Law of Lorentz Guest
|
Posted: Sat Sep 27, 2003 5:41 pm Post subject: Re: PreparedStatement e SQLException |
|
|
Forse non ho capito bene il problema, comunque ti propongo una mia idea:
PreparedStatement pstmt = null;
BigDecimal firstParam = new BigDecimal("153833.00");
int secondParam = 150;
try
{
pstmt = con.prepareStatement("INSERT INTO .... VALUES(?,?, ...)");
pstmt.setBigDecimal(1, firstParam);
pstmt.setInt(2, secondParam);
pstmt.execute();
}
catch(SQLException e)
{
e.printStackTrace();
System.err.println("Eccezione SQLException: firstParam=" + firstParam + "
secondParam=" + secondParam);
}
Bye
"gnebro" <gnebro (AT) inwind (DOT) it> wrote
| Quote: | Ciao a tutti,
faccio un insert attraverso un
stmt = conn.prepareStatement("INSERT INTO .... VALUES(?,?, ...)");
set...
ecc. ecc.
Tutto bene ma quando si genera una SQLException (per es. per un valore
troppo "large" per una colonna) c'è un qualche modo di farsi ritornare (e
stampare un un log) l'istruzione di insert in sintassi SQL (con relativi
valori)? Il problema è che ho tabelle con una cinquantina di colonne e
capire qual'è il valore che ha generato l'eccezione non è semplice né
rapido:-(
Grazie mille.
--------------------------------
Inviato via http://usenet.libero.it
|
|
|
| Back to top |
|
 |
gnebro Guest
|
Posted: Mon Sep 29, 2003 8:20 am Post subject: Re: PreparedStatement e SQLException |
|
|
E' più o meno l'ultima soluzione a cui avrei voluto ricorrere:-). Ti spiego
perché: ho diversi metodi che fanno degli inserto in diverse tabelle,
ciascuna con molte colonne (da 30 a 50). Ora, potrei anche farmi stampare
nel catch di ogni metodo tutti i valori inseriti ma la cosa diventerebbe un
po' lunga. Quello che cercavo è un modo per farmi stampare tutti i valori in
insert (magari evidenziando quello che ha creato problemi) e che
sia applicabile dovunque a prescindere da quanti valori cerco di inserire...
non ne sono sicuro ma spero di aver reso l'idea.
Non so se il printStackTrace possa risolvere la questione, tento e vi faccio
sapere.
| Quote: | try
{
pstmt = con.prepareStatement("INSERT INTO .... VALUES(?,?, ...)");
pstmt.setBigDecimal(1, firstParam);
pstmt.setInt(2, secondParam);
pstmt.execute();
}
catch(SQLException e)
{
e.printStackTrace();
System.err.println("Eccezione SQLException: firstParam=" + firstParam + "
secondParam=" + secondParam);
}
|
--------------------------------
Inviato via http://usenet.libero.it
|
|
| Back to top |
|
 |
gparmiggiani Guest
|
Posted: Mon Sep 29, 2003 8:52 am Post subject: Re: PreparedStatement e SQLException |
|
|
beh... e una cosa del tipo...
class MyPrepStatement implements PreparedStatment {
private final PrepStatement _tie;
public MyPrepStatement(PrepStatement tie, String sql) {
_tie= tie;
}
qualsiasi_metodo() {
_tie.qualsiasi_metodo();
}
execute() {
log(sql);
}
}
class MyPrepStatFactory {
private final Connection conn;
.. boolean debug;
public MyPrepStatFactory(Connection conn, boolean debug) {
...
}
PreparedStatement create(String sql) {
if(debug)
return new MyPrepStatement(...):
else
return conn.prepareStatement(sql);
}
}
poi dovrai gestirti le bind su MyPreparedStatment con qualcosa di simile
ad un message format ed aggiungere i log ma a qusto punto dovresti avere
quello che ti serve :P
scusa la stringatezza ma sarebbe un po' lunghetto spero di essere stato
cmq chiaro.
ciao
On Mon, 29 Sep 2003 08:20:11 +0000, gnebro wrote:
| Quote: | E' più o meno l'ultima soluzione a cui avrei voluto ricorrere:-). Ti spiego
perché: ho diversi metodi che fanno degli inserto in diverse tabelle,
ciascuna con molte colonne (da 30 a 50). Ora, potrei anche farmi stampare
nel catch di ogni metodo tutti i valori inseriti ma la cosa diventerebbe un
po' lunga. Quello che cercavo è un modo per farmi stampare tutti i valori in
insert (magari evidenziando quello che ha creato problemi) e che
sia applicabile dovunque a prescindere da quanti valori cerco di inserire...
non ne sono sicuro ma spero di aver reso l'idea.
Non so se il printStackTrace possa risolvere la questione, tento e vi faccio
sapere.
try
{
pstmt = con.prepareStatement("INSERT INTO .... VALUES(?,?, ...)");
pstmt.setBigDecimal(1, firstParam);
pstmt.setInt(2, secondParam);
pstmt.execute();
}
catch(SQLException e)
{
e.printStackTrace();
System.err.println("Eccezione SQLException: firstParam=" + firstParam + "
secondParam=" + secondParam);
}
--------------------------------
Inviato via http://usenet.libero.it
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|