tchoupinette | voila, je suis en train d'externaliser des requetes imbriquées dans du code java et y'en a une qui me pose un petit probème :
Code :
- StringBuffer query = new StringBuffer();
- appendRoleChange(query, "radm", "usr_administrator" );
- appendRoleChange(query, "rcre", "usr_creator" );
- appendRoleChange(query, "rval", "usr_validator" );
- appendRoleChange(query, "rpub", "usr_publisher" );
- appendRoleChange(query, "rtra", "usr_translator" );
- if (query.length() > 0) {
- query.insert(0, "update gko_user set " );
- query.append(" where usr_id=" ).append(user);
- if (conn.executeUpdate(query.toString()) != 1) throw new LocalizedUserException(this, "User_does_not_exist" );
|
J'ai déjà fait la classe qui externalise les select (c'était le plus simple) et ca marche comme ca :
Code :
- Map valeur=new HashMap();
- Map type= new HashMap();
- List list= new ArrayList();
- String a="";
- String b="";
-
- public KPreparedStatement stat;
- public KDataSet set;
-
- public GeckoSelect(String s) throws Exception{
-
- StringTokenizer st = new StringTokenizer(s,"#",false);
-
- while(st.hasMoreElements()) {
- a=st.nextToken();
- b=b+a;
- if(st.hasMoreElements()){
- a=st.nextToken();
- b=b+'?';
- list.add(a);
- valeur.put(a,null);
- }
-
- }
- }
- public void executeRequete(KConnection conn)throws Exception{
- set=new KDataSet();
- stat = conn.createPreparedStatement();
- stat.setOut(true);
- stat.setSql(b);
-
-
- for(int i=0; i<list.size(); i++){
- stat.addParameter(KDataSet.DATA_INTEGER);
- }
- for(int i=0; i<list.size(); i++){
- stat.setInteger(i,(Integer)valeur.get(list.get(i)));
- }
-
- stat.executeQuery(set);
-
- }
|
la string passer un paramètre dans le constructeur est la requete écrite de cette facon : "select bidule from machin where truc=#TRUC#";
Je voudrais que ca marche à peu pres pareil pour les update mais celui que j'ai donné plus haut me pose problème donc si quelqu'un a une idée pour me mettre sur la voie ce serait cool ...
---------------
http://membres.lycos.fr/axelfa
|