-1
votes

Comment insérer la liste dans la base de données à l'aide de JDBC?

Le format actuel de mon list code> est le suivant: xxx pré>

par laquelle chaque valeur séparée par espace est une ligne de ma table de base de données, par exemple : 60 52 0 0 1512230400 code>. Je veux insérer les 5 valeurs distinctes par boucle. Je veux insérer toutes ces lignes dans ma base de données, mais je ne sais pas exactement comment. Ceci est également une connexion de travail à ma base de données dès maintenant. P>

C'est mon idée approximative: p>

String query = "INSERT INTO games (team1_id, team2_id, score1, score2, created_at) VALUES (? ,?, ?, ?, ? )";
Connection con = DBConnector.connect();
PreparedStatement stmt = con.prepareStatement(query);//prepare the SQL Query

for (String[] s : fixtures) {

}


1 commentaires

Vous pouvez utiliser un insert de lot JDBC: Stackoverflow.com/a/3786127/14955


3 Réponses :


2
votes

Dans votre boucle pour votre boucle, vous pouvez faire quelque chose comme ceci:

stmt.setString(1, s[0]); //team1_id if it's of string type in db
stmt.setInt(2, Integer.parseInt(s[1])); //team2_id if it's of type integer in db
stmt.setInt(3, Integer.parseInt(s[2])); //score1
stmt.setInt(4, Integer.parseInt(s[3])); //score2
stmt.setLong(5, Long.parseLong(s[4])); //created_at
stmt.executeUpdate();


0 commentaires

2
votes
List<String[]> fixtures = new ArrayList<>();
fixtures.add(new String [] {"60","52","0","0","1512230400"});
fixtures.add(new String [] {"76","52","1","1","1514044800"});
fixtures.add(new String [] {"42","52","4","1","1516464000"});

String query = 
  "INSERT INTO games (team1_id, team2_id, score1, score2, created_at)\n"
  + " VALUES (? ,?, ?, ?, ? )";
try(
  Connection con = DBConnector.connect();
  PreparedStatement stmt = con.prepareStatement(query);
) {
  for (String[] s : fixtures) {
    stmt.setString(1,s[0]);
    stmt.setString(2,s[1]);
    stmt.setString(3,s[2]);
    stmt.setString(4,s[3]);
    stmt.setString(5,s[4]);
    stmt.execute();
  }
  con.commit();
}
With this approach, we pass the bind variables as strings. If needed, based on the actual type of the columns being inserted to, conversion from string (VARCHAR) to numeric (NUMBER) will happen by the database. You got basically all of it right, but didn't take the next step of actually setting the bind-variables ...

0 commentaires

0
votes

Ceci peut fonctionner si la liste d'entrée est déjà créée: xxx


0 commentaires