Le code est le suivant :
/** * 动态生成SQ及SQL参数L * @param ve 接收到的消息的CHGLIST * @param paramList MQ消息中的SQL参数 * @param t 泛型对象 * @param table 数据表 * @param list 可执行SQL语句集合 * @return */public <T> String updateSqlAndParamList(Vector<String> ve,List<String> paramList,T t,String table,List<String> list){ String strSql="";//MQ消息SQlString upSql="";//可执行SQLtry {//组装SQL语句strSql = "update "+table+" set "; upSql="update "+table+" set ";for(int i = 0; i < ve.size(); i++){ String str = ""; String upStr=""; String key = ve.get(i); String fileName="get"+key.toUpperCase(); String value=(String)t.getClass().getMethod(fileName).invoke(t); paramList.add(i,value);if(i == ve.size()-1){ str = key+" = ?"; upStr=key+"='"+value+"'"; }else{ str = key+" = ? ,"; upStr=key+"='"+value+"',"; } strSql+=str; upSql += upStr; } strSql +=" where Id = ? "; upSql+=" where id='"+(String) t.getClass().getMethod("getID").invoke(t)+"'"; list.add(upSql); paramList.add(ve.size(),(String) t.getClass().getMethod("getID").invoke(t)); } catch (Exception e) { logger.info("组装UPDATE SQL失败!失败详情---"+e); }return strSql; }
1. Utiliser des instructions dynamiques
De nombreuses bases de données fournissent une syntaxe pour traiter le SQL dynamique, tels que l'instruction EXECUTE IMMEDIATE d'Oracle, EXEC et SP_EXECUTESQL de MSSQL, les instructions préparées de Mysql, etc. Ces fonctions nous permettent de gérer des requêtes dynamiques côté base de données et offrent une excellente traversée, mais cette méthode ne convient qu'aux requêtes dynamiques relativement simples. Dans des situations complexes, la méthode suivante est souvent utilisée.
2. Utiliser des procédures stockées
Pour les situations complexes, le SQL dynamique est généralement intégré à des procédures stockées. L'utilisation de procédures stockées est relativement flexible, mais la complexité du codage est trop élevée et parfois l'efficacité d'exécution est faible.
3. Utiliser d'autres programmes (tels que JAVA)
Utiliser d'autres langages externes de haut niveau (tels que JAVA) pour l'épisser puis le transmettre à la base de données pour exécution est également une option. Il offre une grande flexibilité, mais en raison du manque de prise en charge par JAVA pour les calculs définis, il n'est pas facile de réaliser ces préparations.
Si le programme de contrôle principal qui doit exécuter du SQL dynamique est JAVA, vous pouvez utiliser esProc pour vous aider à effectuer des calculs SQL dynamiques. esProc est un script qui interprète et exécute dynamiquement l'orthographe. sur l'exécution dynamique de SQL. esProc fournit une interface JDBC qui peut être placée entre les applications Java et les bases de données, permettant aux applications de continuer à exécuter des scripts esProc comme si elles accédaient à la base de données, sans pratiquement aucune modification de la structure de l'application.
Ce qui suit utilise des exemples pour illustrer comment utiliser esProc pour effectuer des calculs SQL dynamiques et les intégrer dans des programmes JAVA.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!