Lors de l'insertion de Java vers MySQL, obtenez Auto_Increment_ID (valeur de numérotation automatique) comme valeur de retour

introduction

Montre comment obtenir la valeur Auto_Increment lors de l'insertion d'un enregistrement dans une base de données à partir du code Java à l'aide de JDBC.

Vous pouvez obtenir la dernière valeur numérotée par SELECT LAST_INSERT_ID (), mais vous pouvez l'utiliser lorsque vous voulez l'obtenir comme valeur de retour.

environnement d'utilisation

Conditions préalables

Tout d'abord, créez la base de données / table suivante. --Nom de la base de données: testdb --Nom de la table: test

Ici, préparez la colonne idet lacolonne de nom de type Char`, qui sont les clés primaires avec ʻAuto_Increment défini dans la table de test.

Le SQL pour créer la table est le suivant.

CREATE TABLE test(
  id INT NOT NULL AUTO_INCREMENT,
  name CHAR(30) NOT NULL,
  PRIMARY KEY (id)
);

Si vous vérifiez les informations de colonne de la table (SHOW COLUMNS FROM table name), vous pouvez voir que ʻAuto_Increment est défini dans la colonne id de la clé primaire`.

Field Type Null Key Default Extra
id int NO PRI NULL auto_increment
name char NO NULL

Comment obtenir Auto_Increment_ID

Tout d'abord, la source Java est affichée.

Test.java


public class Test {

	public static void main(String[] args) {
		 int autoIncrementKey = 0;

	     try {
	     //Charge du conducteur
	     Class.forName("com.mysql.jdbc.Driver");

	     //Connectez-vous à MySQL
	     Connection con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "user", "password");
         
	     String sql = "insert into test(name) values (?)";
	     
         //Génération de déclaration
         //RETOUR ici_GENERATED_Définir les clés
	     PreparedStatement stmt = con.prepareStatement(sql, java.sql.Statement.RETURN_GENERATED_KEYS);

	     stmt.setString(1, "XXX");
	     stmt.executeUpdate();

         // getGeneratedKeys()Par Auto_Obtenez l'ID incrémenté
	     ResultSet res = stmt.getGeneratedKeys();

	     if(res.next()){
	    	 autoIncrementKey = res.getInt(1);
	     }

	     System.out.println(autoIncrementKey);

	     res.close();
	     stmt.close();
	     con.close();

		} catch (Exception e){
			System.out.println(e);
		}
	}

}

Lors de la génération d'un PreparedStatement, définissez le second argument sur java.sql.Statement.RETURN_GENERATED_KEYS.

Ensuite, après avoir exécuté l'instruction Insert avec stmt.exceuteUpdate (), en exécutant stmt.getGeneratedKeys (), l'identifiant numéroté automatiquement peut être obtenu.

en conclusion

Il existe peu de possibilités d'utiliser Java et SQL bruts, mais pour rappel.

Recommended Posts

Lors de l'insertion de Java vers MySQL, obtenez Auto_Increment_ID (valeur de numérotation automatique) comme valeur de retour
[Java] Obtenir plusieurs valeurs à partir d'une valeur de retour
[Java] Comment obtenir la valeur maximale de HashMap
9 Correspond à la valeur de retour
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Obtenez l'ID de la numérotation automatique
La route de JavaScript à Java
[Java] Comment convertir du type String en type Path et obtenir le chemin
Mettez à jour JAVA vers la dernière version vers 1.8.0_144 (lors du téléchargement à partir du Web et de la mise à jour)
Comment renvoyer une valeur du modèle au contrôleur en utilisant le protocole [Swift5]
N'oubliez pas de relâcher lorsque vous récupérez l'objet de S3!
[Petite histoire Java] Surveiller lorsqu'une valeur est ajoutée à la liste
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
Comment créer votre propre annotation en Java et obtenir la valeur
[Java] Comment obtenir le répertoire actuel
Comment obtenir la date avec Java
Précautions lors de la migration de VB6.0 vers JAVA
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
[Java] Exemple de programme qui acquiert les valeurs maximum et minimum d'un tableau
Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0
Connectez-vous à Aurora (MySQL) depuis une application Java
Comment obtenir une classe depuis Element en Java
[Java] Récupère des valeurs de manière aléatoire dans un tableau
[Java] Comment obtenir l'URL redirigée finale
Je veux obtenir la valeur en Ruby
[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif
Passez un argument à la méthode et recevez le résultat de l'opération comme valeur de retour
[Java] Comment obtenir l'URL de la source de transition
Sortie de la valeur maximale d'un tableau à l'aide de la sortie standard Java
[Java] Je souhaite calculer la différence par rapport à la date
Comment écrire Scala du point de vue de Java
[Java] Comment extraire le nom du fichier du chemin
Source utilisée pour obtenir l'URL de la source de redirection en Java
À partir d'avril 2018 Comment installer Java 8 sur Mac
Je veux renvoyer un type différent de l'élément d'entrée avec Java8 StreamAPI Reduce ()