AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

PreparedStatement e SQLException

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
gnebro
Guest





PostPosted: Fri Sep 26, 2003 1:35 pm    Post subject: PreparedStatement e SQLException Reply with 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
gparmiggiani
Guest





PostPosted: Fri Sep 26, 2003 2:56 pm    Post subject: Re: PreparedStatement e SQLException Reply with quote



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





PostPosted: Sat Sep 27, 2003 5:41 pm    Post subject: Re: PreparedStatement e SQLException Reply with quote



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





PostPosted: Mon Sep 29, 2003 8:20 am    Post subject: Re: PreparedStatement e SQLException Reply with 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.


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





PostPosted: Mon Sep 29, 2003 8:52 am    Post subject: Re: PreparedStatement e SQLException Reply with quote

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 Smile 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
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.