2017-02-23 2 views
-1

Création d'une application CRUD en utilisant jdbc et mysql. Je Person.class et deux tables de base de données:Ajouter une personne à la base de données avec le champ ArrayList. Servlet

class Person { 
String name; 
String surname; 
List<String> phones; 
} 

Tables:  
`phone` 
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `owner` INT UNSIGNED NOT NULL, 
    `number` VARCHAR(50) NOT NULL, 
    CONSTRAINT `PK_phone` PRIMARY KEY (`id`) 
) 
    `person` 
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `surname` VARCHAR(150) NOT NULL, 
    `name` VARCHAR(150) NOT NULL, 
    CONSTRAINT `PK_phonebook` PRIMARY KEY (`id`) 
) 
ALTER TABLE `phone` 
ADD CONSTRAINT `FK_phone_person` 
    FOREIGN KEY (`owner`) REFERENCES `person` (`id`) ON DELETE Cascade ON UPDATE Cascade 
; 
SET FOREIGN_KEY_CHECKS=1 ; 

Comment je peux ajouter une personne avec les téléphones liste des champs à la base de données en utilisant Servlets ??? Par exemple:
Harry Smith +37521987902
+56727172713
+45679012214

+0

Alors, quelle est la question exactement? – Mureinik

+0

Comment puis-je ajouter une personne avec champ Liste des téléphones à la base de données en utilisant Servlets ??? –

Répondre

1

L'idée est simple, vous pouvez utiliser cette façon

  1. Insérez votre personne
  2. obtenir l'ID de cette personne
  3. insérer la liste de téléphone

Vous pouvez l'utiliser comme ceci:

try { 
    Class.forName(driver); 
    Connection connection = DriverManager.getConnection(DB_URL, DB_username, DB_password); 

    String query = "INSERT INTO person (surname, name) values(?, ?)"; 
    PreparedStatement preparedStatement = connection.prepareStatement(query); 
    preparedStatement.setString(1, "hello"); 
    preparedStatement.setString(2, "jdbc"); 

    int affectedRows = preparedStatement.executeUpdate(); 
    long id = 0; 
    if (affectedRows > 0) { 
     ResultSet generatedKeys = preparedStatement.getGeneratedKeys(); 
     if (generatedKeys.next()) { 
      id = generatedKeys.getLong(1); 
     } else { 
      throw new SQLException("Creating user failed, no ID obtained."); 
     } 
    } 

    connection.setAutoCommit(false); 
    PreparedStatement ps = connection.prepareStatement("INSERT INTO phone (owner, number) values(?, ?)"); 
    for (String phone : listePhone) { 
     preparedStatement.setLong(1, id); 
     preparedStatement.setString(2, phone); 
     ps.addBatch(); 
    } 
    ps.executeBatch(); 
    connection.commit(); 

} 

Vous pouvez apprendre à exécuter plusieurs déclaration en un seul coup, en utilisant statement-batching