Maison  >  Questions et réponses  >  le corps du texte

Réécrivez le titre comme suit : En obtenant l'identifiant du ResultSet et en le renvoyant sous la forme d'un java.sql.Array

<p>J'ai les éléments suivants :</p> <pre class="brush:scala;toolbar:false;"> def getIds(nom : String) : java.sql.Array = { identifiants de valeur : Array[Integer] = Array() val ps : PreparedStatement = connection.prepareStatement("SELECT id FROM table WHERE name = ?") ps.setString(1, nom) val resultSet = ps.executeQuery() while(resultSet.next()) { val currentId = resultSet.getInt(1) identifiants :+ identifiant actuel } return connection.createArrayOf("INTEGER", ids.toArray) } ≪/pré> <p>Mon intention est d'utiliser la sortie de cette méthode dans un autre PreparedStatement, en utilisant <code>.setArray(1, <array>)</code></p> <p>Mais j'obtiens l'erreur suivante : <code>java.sql.SQLFeatureNotSupportedException</code></p> <p>J'utilise MySQL. Déjà essayé INTEGER, INT, BIGINT. Mais tout a échoué. </p>
P粉905144514P粉905144514388 Il y a quelques jours452

répondre à tous(1)je répondrai

  • P粉265724930

    P粉2657249302023-09-04 14:49:07

    Le contenu traduit est :

    Après recherches, nous avons trouvé :

    Ma solution a donc été de créer une table temporaire contenant uniquement les identifiants :

    val idsStatement = connection.prepareStatement(
       "CREATE TEMPORARY TABLE to_delete_ids SELECT id FROM table WHERE name = ?")
    idsStatement.setString(1, name)
    idsStatement.executeUpdate()
    

    Ensuite, effectuez une jointure interne avec d'autres instructions/requêtes pour obtenir le même résultat :

    val statementDeleteUsingIds = connection.prepareStatement(
        "DELETE to_delete_rows FROM table2 to_delete_rows INNER JOIN to_delete_ids tdi ON tdi.id = to_delete_rows.other_tables_id")
    statementDeleteUsingIds.executeUpdate()
    

    répondre
    0
  • Annulerrépondre