J'ai un problème avec JDBC. toute la configuration est correcte. c'est la classe:Erreur Java JDBC Java avec message de savon
package eai.serviceImpt;
import java.rmi.RemoteException;
import java.sql.*;
import org.apache.axis2.AxisFault;
import eai.payCore.Payement;
import eai.serviceInvocation.Compte_managerCallbackHandler;
import eai.serviceInvocation.Compte_managerStub;
import eai.serviceInvocation.Compte_managerStub.GetCompteIdetifiant;
import eai.serviceInvocation.Compte_managerStub.GetCompteIdetifiantResponse;
public class PayementManager {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/payement";
static final String USER = "root";
static final String PASS = "";
Connection conn = null ;
PreparedStatement stmt = null;
public int manageSolde(String log , String pass , int sold) throws
RemoteException{
Compte_managerStub stub = new Compte_managerStub
("http://localhost:8021/axis2/services/compte_manager");
GetCompteIdetifiant request = new GetCompteIdetifiant();
request.setLog(log);
request.setPass(pass);
GetCompteIdetifiantResponse response =
stub.getCompteIdetifiant(request);
Compte_managerStub.Compte compte = response.get_return();
if (compte == null)
{return -1;} //if account does not exist
else{
if (sold < 0) {return -2;} //le prix est inférieur à 0
else{
int id_payement=compte.getId_payement();
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
conn = DriverManager.getConnection(DB_URL, USER, PASS);
//STEP 4: Execute a query
String sql = "SELECT login , password , solde FROM payem
WHERE id_payement = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, id_payement);
ResultSet rs = stmt.executeQuery();
//STEP 5: Extract data from result set
String login = rs.getString("login");
String password = rs.getString("password");
int solde =rs.getInt("solde");
rs.close();
//2éme verification
if (log.equals(login) && pass.equals(password)){
if (sold > solde){
stmt.close();
conn.close();
return -4 ; //solde insuffisant
}
else{
solde = solde - sold;
//update in our database
String sql1 = "UPDATE payem SET solde = ? WHERE
id_payement = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, solde);
stmt.setInt(2, id_payement);
stmt.executeQuery();
stmt.close();
conn.close();
return solde;
}
}
else{
stmt.close();
conn.close();
return -3; //2éme verification du compte
}
}
catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
return id_payement;// 2 time to avoid try problem
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
return id_payement; // 2 time to avoid try problem
}finally{
//finally block used to close resources
try{
if(stmt!=null)
conn.close();}
catch(SQLException se){}
try{
if(conn!=null)
conn.close();}
catch(SQLException se){
se.printStackTrace();
}
}
}
//return -5;
}
}
}
Cette classe implémente un service web de soap avec manageSolde est l'opération. J'utilise SoapUI pour tester mes services Web. Je reçois une bonne réponse d'autres instructions if, mais quand j'essaie de tester le stelment if où j'ai les instructions SQL, le programme execut catch statement.so, je pense que le problème dans JDBC ou instruction SQL.
c'est ma table dans ma base de données: