J'utilise la déclaration préparée à faire insérer en suivant façon:déclaration préparée ligne insérée
String query = "Insert into ROLE (ROLEID,ROLENAME,TYPEID,UPDATETIMESTAMP) values (?,?,?,?)";
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, password);
preparedStatement = conn.prepareStatement(query);
preparedStatement.setInt(1, 0);
preparedStatement.setString(2, roleName);
preparedStatement.setInt(3, roleId);
preparedStatement.setTimestamp(4,null);
preparedStatement.executeUpdate();
Ici RoleId est la clé primaire et est mis à jour en interne par obtenir une séquence par une détente. Mon problème ici est après l'insertion j'ai besoin d'aller chercher le ROLEID qui a été inséré. Je peux utiliser une requête comme select * de order par ROLEID desc, mais je ferais mieux de trouver l'identifiant spécifique utilisé par cette instruction préparée.
Un conseil?
Jetez un oeil à http://docs.oracle. com/javase/8/docs/api/java/sql/Connection.html # prepareStatement-java.lang.String-int- –
Une autre approche consisterait à utiliser une procédure stockée de base de données pour effectuer l'insertion et appeler la procédure stockée à partir de Java. La procédure stockée doit avoir un paramètre OUT qui n'est rien d'autre que votre 'ROLEID'. Ainsi vous avez une plus grande flexibilité et gardez toute la logique de base de données dans le backend. – user75ponic